Ноябрь 1st, 2015
Основной проблемой простого метода близнецов являлась низкая производительность работы из-за необходимости постоянного разделения и слияния буферов. Обычно распределители памяти находятся в некотором равновесном состоянии, то есть количество используемых буферов каждого размера остается в примерно известном диапазоне. При таких условиях совмещение буферов не дает никаких преимуществ, время частично тратится впустую. Слияние необходимо только при постоянно меняющихся условиях использования буферов памяти.
Задержка слияния определяется как время, необходимое либо для соединения буфера со своим близнецом, либо для определения того факта, что близнец занят. Объединение приводит к появлению буфера размера увеличенной степени числа 2, процесс повторяется до тех пор, пока распределитель перестанет находить свободных близнецов (то есть операция является рекурсивной). В алгоритме близнецов каждая операция освобождения приводит, по крайней мере, к однократной задержке слияния, а чаще всего, не только к одной. В настоящее время интернет-провайдеров очень много и выбрать одного – задача не из простых. Одним из лидеров и крупнейшим оператором является компания IPNET. Она предоставляет комплексные услуги по подключению интернет тв hd. На сайте http://ipnet.ua/ можно ознакомиться с действующими тарифами и акциями и убедиться, что у данного оператора самые удобные и выгодные услуги.
Интуитивно-логичное решение проблемы заключается в откладывании операции слияния до того момента, пока она не будет необходима, — вот тогда и нужно производить сращивание как можно большего числа буферов. Несмотря на то, что такой подход уменьшит время, затрачиваемое в среднем для выделения и освобождения буферов, то небольшое количество запросов, которое требует вызова операции объединения, будет обслуживаться слишком медленно. Распределитель памяти может быть вызван критичными к скорости выполнения функциями, такими как обработчики прерываний, отсюда становится очевидной необходимость управления таким наихудшим вариантом. Необходимо создать такое средство, которое бы задерживало операции слияния буферов, кроме критичных случаев, а также умело распределять операции объединения на несколько запросов (что не так сильно увеличит время реакции на запрос, повлекший за собой необходимость вызова этой операции). В работе [10] описывается решение проблемы, основанное на ассоциации с каждым классом буферов «водяных знаков» (watermarks). В системе SVR [2] используется та же идея, но с большей эффективностью.