Предотвращение перегруженности: для чего нужны несколько потоков
Предотвращение перегруженности: для чего нужны несколько потоков
Один из главных недостатков решения на основе демона bdflush состоит в том, что демон bdflush имел всего один поток выполнения. Это приводило к возможности зависания демона при большом количестве операций обратной записи, когда один поток демона bdflush блокировался на очереди запросов ввода-вывода перегруженного устройства, в то время как очереди запросов других устройств могли быть в этот момент сравнительно свободными. Если система имеет несколько дисков и соответствующую процессорную мощность, то ядро должно иметь возможность загрузить работой все диски. К сожалению, даже при большом количестве данных, для которых необходима обратная запись, демон bdflush может оказаться загруженным работой с одной очередью и не сможет поддерживать все диски в нагруженном состоянии. Это происходит потому, что пропускная способность диском конечна и, к несчастью, очень низкая. Если только один поток выполняет обратную запись страниц, то он может проводить много времени в ожидании одного диска, так как пропускная способность диска ограничена. Для облегчения этой ситуации ядру необходима многопоточная обратная запись. В таком случае ни одна очередь запросов не может стать узким местом.
В ядрах серии 2.6 эта проблема решается путем введения нескольких потоков pdflush. Каждый поток самостоятельно выполняет обратную запись страниц памяти на диск, что позволяет различным потокам pdflush работать с разными очередями запросов устройств.
Количество потоков изменяется в процессе работы системы в соответствии с простым алгоритмом. Если все существующие потоки pdflush оказываются занятыми в течение одной секунды, то создается новый поток pdflush. Общее количество потоков не может превышать значения константы MAX_PDFLUSH_THREADS, которая по умолчанию равна 8. И наоборот, если поток pdflush находился в состоянии ожидания больше одной секунды, то он уничтожается. Минимальное количество потоков равно, по крайней мере, значению константы MIN_PDFLUSH_THREADS, что по умолчанию соответствует 2. Таким образом, количество потоков pdflush изменяется динамически в зависимости от количества страниц, для которых необходима обратная запись, и загруженности этих потоков. Если все потоки pdflush заняты обратной записью, то создается новый поток. Это гарантирует, что ни одна из очередей запросов устройств не будет перегружена, в то время как другие очереди устройств не так загружены и в них тоже можно выполнять обратную запись. Если перегрузка предотвращается, то количество потоков pdflush уменьшается, чтобы освободить память.
Всё это хорошо, но что если все потоки pdflush зависнут в ожидании записи в одну и ту же перегруженную очередь? В этом случае производительность нескольких потоков pdflush не будет выше производительности одного потока, а количество занятой памяти станет значительно большим. Чтобы уменьшить такой эффект, для потоков pdflush реализован алгоритм предотвращения зависания (congestion avoidance). Потоки активно начинают обратную запись страниц для тех очередей, которые не перегружены. В результате потоки pdflush распределяют свою работу по разным очередям и воздерживаются от записи в перегруженную очередь. Когда все потоки pdflush заняты работой и запускается новый поток, то это означает, что они действительно заняты.
В связи с усовершенствованием алгоритмов обратной записи страниц, включая введение демона bdflush, ядро серии 2.6 позволяет поддерживать в загруженном состоянии значительно большее количество дисков, чем в более старых версиях ядер. При активной работе потоки pdflush могут обеспечить большую пропускную способность сразу для большого количества дисковых устройств.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Стеки потоков и допустимые количества потоков
Стеки потоков и допустимые количества потоков Следует сделать еще два предостережения. Во-первых, подумайте о размере стека, который по умолчанию составляет 1 Мбайт. В большинстве случаев этого будет вполне достаточно, но если существуют какие-либо сомнения на сей счет,
1.6. Какие сервера бывают и для чего они нужны
1.6. Какие сервера бывают и для чего они нужны Для полноты картины рассмотрим несколько различных типов серверов:1. Сервер локальной сети.2. Шлюз.3. Сервер удаленного доступа.Сервер любого типа вы сможете настроить с помощью данной
1.7.1. Для чего нужны каталоги
1.7.1. Для чего нужны каталоги Переходя из категории в категорию, пользователи находят нужную им информацию. Чтобы людям было проще выбрать, на какой сайт перейти, каждый ресурс сопровождается коротким или подробным описанием.Работа каталогов с новыми ресурсами построена
Для чего нужны индексы?
Для чего нужны индексы? Единственное, чему способствуют индексы, - это ускорению поиска записи по ее индексированному полю (индексированное - значит входящее в индекс).Итак, основная функция индексов - обеспечивать быстрый поиск записи в таблице. Любое использование
10.10. Несколько производителей, несколько потребителей
10.10. Несколько производителей, несколько потребителей Следующее изменение, которое мы внесем в нашу пpoгрaммy, будет заключаться в добавлении возможности одновременной работы нескольких потребителей вместе с несколькими производителями. Есть ли смысл в наличии
Совет 41. Разберитесь, для чего нужны ptr_fun, mem_fun и mem_fun_ref
Совет 41. Разберитесь, для чего нужны ptr_fun, mem_fun и mem_fun_ref Загадочные функции ptr_fun/mem_fun/mem_fun_ref часто вызывают недоумение. В одних случаях их присутствие обязательно, в других они не нужны... но что же они все-таки делают? На первый взгляд кажется, что они бессмысленно
Для чего нужны группы?
Для чего нужны группы? Группы помогают упорядочить контакты в списке. Когда контактов много, это очень удобно. По умолчанию в списке контактов ICQ уже есть две группы: Общие и Нет в списке.Чтобы создать новую группу, в главном окне программы нажмите кнопку Добавить контакт
Нетбуки: зачем они нужны и из чего выбирать Олег Нечай
Нетбуки: зачем они нужны и из чего выбирать Олег Нечай Опубликовано 29 декабря 2010 года Появившийся в октябре 2007 года недорогой субноутбук Asus Eee PC был «потребительским» ответом на «стодолларовый» ноутбук XO-1 для детей развивающихся стран,
Подход третий: Несколько product owner’ов - несколько backlog’ов
Подход третий: Несколько product owner’ов - несколько backlog’ов Похоже на второй вариант, по отдельному product backlog на команду, только ещё и с отдельным product owner’ом на каждую команду. Мы не пробовали так делать, и, скорее всего, пробовать не будем.Если два product backlog’а касаются одного и
Предотвращение обмана
Предотвращение обмана Ваша компания ответственна за то, чтобы предупредить работников насколько серьёзной может быть выдача непубличной информации. Хорошая продуманная информационная политика безопасности вместе с надлежащим обучением и тренировками улучшат
Предотвращение обмана
Предотвращение обмана Какими мерами может воспользоваться ваша организация, чтобы уменьшить вероятность, что социальные инженеры воспользуются преимуществом над природными инстинктами ваших служащих, чтобы поверить людям? Вот некоторые меры.Защитите ваших клиентовВ
Предотвращение обмана
Предотвращение обмана Атаки социальных инженеров могут стать еще более деструктивными, когда атакующий использует элементы технологии. Предотвращение этого вида атаки обычно включает в себя меры безопасности на человеческом и технологическом уровне.Просто скажи
Предотвращение обмана
Предотвращение обмана Когда спрашивают любую ценную, чувствительную, или критически важную информацию, которая может сослужить выгоду конкуренту или кому угодно еще, сотрудники должны быть осведомлены, что использование услуги “caller ID” в смысле подтверждения личности
Для чего нужны гранты Дмитрий Вибе
Для чего нужны гранты Дмитрий Вибе Опубликовано 27 августа 2013 Приближается дата, важная для российского научного мироощущения, — дата подачи заявок на гранты РФФИ. Не на все, конечно: есть много грантов, заявки на которые принимаются к другим датам