Ограничьте фоновый сброс Linux (грязные страницы)

Оборудование UPS

UPSs будет иметь некоторую фильтрацию питания встроенной - проверяют спецификацию с производителем. Если Ваш резервный генератор является восходящим из UPS, он не должен оказывать негативное влияние на качество питания, прибывающего из UPS.

Если Вы хотите купить новое оборудование UPS, рассмотреть рассмотрение аппаратных средств, которые возьмут стандартные батареи UPS (не может помнить тип, но это прибудет ко мне). Некоторые UPSs берут собственные батареи. В некоторых случаях можно добавить дополнительные батареи к UPS для увеличения его способности. Во всех случаях можно сэкономить деньги на заменяющих батареях (и возможно получить лучшие аппаратные средства батареи), если UPS берет товарный тип.

Генераторы резервной мощности

Китайские производители генераторов как Питание Потока делают довольно хорошее резервное оборудование поколения, которое более дешево, чем Вы могли бы думать (я видел 6 000 CAD для модели на 20 кВА). В сочетании с UPS можно получить довольно разумную надежность для существенно меньше, чем стоимость оборудования сервера.

Трехфазное питание

Трехфазное питание является системой, где у Вас есть 3 переменных тока 120 градусов, несовпадающих по фазе друг с другом. Можно соединить 3 системы фазы проводом через фазы или от фаз до центрального нейтрального. Где линии питания имеют 3 провода, каждый провод является единственной фазой. Можно добраться 400v или так между двумя фазами с 230v питание, таким образом, это немного более эффективно для выполнения определенных типов электрического оборудования. Регулярные смещения фаз также делают это хорошим для выполнения электродвигателей, поскольку нет никаких точек в цикле с нулевым потоком (который может произойти с определенными типами единственных двигателей фазы). Где единственная фаза активна, это означает, что две из фаз не работают.

Механические ротационные преобразователи

Машины маховика, к которым Вы обращаетесь, являются, вероятно, ротационными преобразователями - по существу двигатель, большой маховик и генератор. Они используются для обеспечения чистой энергии посредством импульса маховика. Скачок не делает многого к скорости, которую поворачивает маховик, таким образом, распорка делает много к влажным колебаниям мощности. Они вполне широко используются, где действительно чистая энергия или большая емкость необходимы, но они являются намного более дорогими, чем твердотельное оборудование фильтрации питания.

Регулирование напряжения

Предоставления коммутируемой мощности довольно терпимы к колебаниям напряжения - большая часть коммерческой работы источников питания ПК где угодно между 90 и 250v. Если Вы будете иметь резервную власть для целой установки затем, то регулирование напряжения будет, вероятно, только иметь незначительную справку.

Фильтрация питания

Однако скачки питания являются значительной угрозой, таким образом, у Вас должна, вероятно, быть фильтрация питания. Хороший фильтр питания имеет три уровня: полиограничения, которые являются самыми быстрыми, но наименее терпимыми, Тиристоры, которые обрабатывают большие скачки напряжения и Газоразрядные лампы, которые выводят энергию путем образования дуги его через разрыв. Фильтр питания с максимальной мощностью, оцененной в тысячах джоулей, вероятно, имеет газоразрядную лампу. Простой 2-3KVA сетевой фильтр должен справиться с довольно многими ПК. Сделайте свою домашнюю работу и получите хорошую.

Полиограничения только длятся несколько лет. Вы, возможно, должны изучить заменяющее расписание для них. Если Вы добираетесь, пустые взгляды от поставщика переходят к кому-то, кто действительно понимает то, о чем Вы говорите. Комплекты оборудования, которые продают и поддерживают сигнализации, более вероятно, будут знать что-то об этом, поскольку шумное питание генерирует побочные выноски.

26
задан 21 April 2018 в 12:22
4 ответа

После большого сравнительного тестирования с sysbench я прихожу к этому заключению:

Выжить (мудрый производительностью) ситуация где

  • злой процесс копии лавинно рассылает грязные страницы
  • и аппаратный кэш записи присутствует (возможно также без этого)
  • и синхронные чтения или записи в секунду (IOPS) очень важны

просто выведите все лифты, очереди и кэши грязной страницы. Корректное место для грязных страниц находится в RAM того аппаратного кэша записи.

Скорректируйте dirty_ratio (или новый dirty_bytes) как низко как возможный, но следите за последовательной пропускной способностью. В моем особом случае 15 МБ были оптимальны (echo 15000000 > dirty_bytes).

Это - больше взлом, чем решение, потому что гигабайты RAM теперь используются для чтения, кэширующегося только вместо грязного кэша. Чтобы грязный кэш удался хорошо в этой ситуации, фоновый ассенизатор ядра Linux должен был бы составить в среднем, в какой скорости базовое устройство принимает запросы и корректирует фон, сбрасывающий соответственно. Не легкий.


Спецификации и сравнительные тесты для сравнения:

Протестированный, в то время как dd'нули луга к диску, sysbench показал огромный успех, повысив 10 потоков fsync записи на уровне 16 КБ с 33 до 700 IOPS (неактивный предел: 1500 IOPS) и единственный поток от 8 до 400 IOPS.

Без загрузки IOPS были незатронуты (~1500) и пропускная способность, немного уменьшенная (от 251 МБ/с до 216 МБ/с).

dd вызов:

dd if=/dev/zero of=dumpfile bs=1024 count=20485672

для sysbench test_file.0 был готов быть нередким с:

dd if=/dev/zero of=test_file.0 bs=1024 count=10485672

sysbench призывают к 10 потокам:

sysbench --test=fileio --file-num=1 --num-threads=10 --file-total-size=10G --file-fsync-all=on --file-test-mode=rndwr --max-time=30 --file-block-size=16384 --max-requests=0 run

sysbench призывают к одному потоку:

sysbench --test=fileio --file-num=1 --num-threads=1 --file-total-size=10G --file-fsync-all=on --file-test-mode=rndwr --max-time=30 --file-block-size=16384 --max-requests=0 run

Меньшие размеры блока показали еще более решительные числа.

- file-block-size=4096 с 1 ГБ dirty_bytes:

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
1 files, 10Gb each
10Gb total file size
Block size 4Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Calling fsync() after each write operation.
Using synchronous I/O mode
Doing random write test
Threads started!
Time limit exceeded, exiting...
Done.

Operations performed:  0 Read, 30 Write, 30 Other = 60 Total
Read 0b  Written 120Kb  Total transferred 120Kb  (3.939Kb/sec)
      0.98 Requests/sec executed

Test execution summary:
      total time:                          30.4642s
      total number of events:              30
      total time taken by event execution: 30.4639
      per-request statistics:
           min:                                 94.36ms
           avg:                               1015.46ms
           max:                               1591.95ms
           approx.  95 percentile:            1591.30ms

Threads fairness:
      events (avg/stddev):           30.0000/0.00
      execution time (avg/stddev):   30.4639/0.00

- file-block-size=4096 с 15 МБ dirty_bytes:

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
1 files, 10Gb each
10Gb total file size
Block size 4Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Calling fsync() after each write operation.
Using synchronous I/O mode
Doing random write test
Threads started!
Time limit exceeded, exiting...
Done.

Operations performed:  0 Read, 13524 Write, 13524 Other = 27048 Total
Read 0b  Written 52.828Mb  Total transferred 52.828Mb  (1.7608Mb/sec)
    450.75 Requests/sec executed

Test execution summary:
      total time:                          30.0032s
      total number of events:              13524
      total time taken by event execution: 29.9921
      per-request statistics:
           min:                                  0.10ms
           avg:                                  2.22ms
           max:                                145.75ms
           approx.  95 percentile:              12.35ms

Threads fairness:
      events (avg/stddev):           13524.0000/0.00
      execution time (avg/stddev):   29.9921/0.00

- file-block-size=4096 с 15 МБ dirty_bytes в неактивной системе:

sysbench 0.4.12: многопоточный системный сравнительный тест оценки

Running the test with following options:
Number of threads: 1

Extra file open flags: 0
1 files, 10Gb each
10Gb total file size
Block size 4Kb
Number of random requests for random IO: 0
Read/Write ratio for combined random IO test: 1.50
Calling fsync() after each write operation.
Using synchronous I/O mode
Doing random write test
Threads started!
Time limit exceeded, exiting...
Done.

Operations performed:  0 Read, 43801 Write, 43801 Other = 87602 Total
Read 0b  Written 171.1Mb  Total transferred 171.1Mb  (5.7032Mb/sec)
 1460.02 Requests/sec executed

Test execution summary:
      total time:                          30.0004s
      total number of events:              43801
      total time taken by event execution: 29.9662
      per-request statistics:
           min:                                  0.10ms
           avg:                                  0.68ms
           max:                                275.50ms
           approx.  95 percentile:               3.28ms

Threads fairness:
      events (avg/stddev):           43801.0000/0.00
      execution time (avg/stddev):   29.9662/0.00

Система тестирования:

  • Adaptec 5405Z (это - кэш записи на 512 МБ с защитой),
  • Intel Xeon L5520
  • 6 гибибайт RAM 1 066 МГц
  • Материнская плата Супермикро X8DTN (5 520 чипсетов)
  • 12 дисков Барракуды Seagate 1 ТБ
    • 10 в программном обеспечении RAID 10 Linux
  • Ядро 2.6.32
  • Файловая система xfs
  • Нестабильный Debian

Таким образом, я теперь уверен, что эта конфигурация будет работать хорошо в неактивной, высокой загрузке и даже ситуациях с предельной нагрузкой для трафика базы данных, который иначе оголодал бы последовательным трафиком. Последовательная пропускная способность выше, чем ссылки на два гигабита могут поставить так или иначе, таким образом, без проблем, уменьшающая ее немного.

20
ответ дан 28 November 2019 в 20:10

Каково Ваше среднее число для Грязного в/proc/meminfo? Это не должно обычно превышать Ваш/proc/sys/vm/dirty_ratio. На выделенном файловом сервере у меня есть набор dirty_ratio к очень высокому проценту памяти (90), поскольку я никогда не буду превышать его. Ваш dirty_ration является слишком низким при ударе его все гадит, повысьте его.

0
ответ дан 28 November 2019 в 20:10
  • 1
    Проблемой не являются процессы, заблокированные при ударе dirty_ratio. I' m хорошо с этим. Но " background" процесс, выписывающий грязные данные к дискам, заполняет очереди без милосердия и уничтожает производительность IOPS. It' s названный исчерпанием ресурсов IO я думаю. На самом деле установка dirty_ratio_bytes чрезвычайно низко (как 1 МБ) помогает много, потому что сбрасывание произойдет почти сразу, и очереди будут сохранены пустыми. Недостаток является возможно более низкой пропускной способностью для последовательного, но that' s хорошо. –  korkman 11 April 2010 в 14:53
  • 2
    Вы выключили все лифты? Что еще Вы настраивали от ванильной системы? –  Luke 15 April 2010 в 07:58
  • 3
    См. мой самоответ. Конец истории должен был удалить грязное кэширование и отпуск что часть к контроллеру HW. Лифты довольно не важны с кэшем записи HW на месте. Контроллер имеет it' s владеют алгоритмами лифта также - любой лифт в программном обеспечении только добавляет наверху. –  korkman 17 April 2010 в 17:44

Несмотря на то, что настройка параметров ядра остановила проблему, на самом деле возможно, что проблемы с производительностью были результатом ошибки на контроллере Adaptec 5405Z, которая была исправлена в обновлении прошивки от 1 февраля 2012 года. В примечаниях к обновлению сказано: "Исправлена проблема, когда прошивка могла зависать при высокой нагрузке на входы/выходы". Возможно, распространения входов/выходов, как вы это делали, было достаточно, чтобы предотвратить срабатывание этой ошибки, но это всего лишь предположение.

Вот примечания к обновлению: http://download.adaptec.com/pdfs/readme/relnotes_arc_fw-b18937_asm-18837.pdf

Даже если это не относится к вашей конкретной ситуации, я подумал, что это может принести пользу пользователям, которые столкнутся с этим постом в будущем. Мы увидели в выводе dmesg несколько сообщений, которые в итоге привели нас к обновлению прошивки:

aacraid: Host adapter abort request (0,0,0,0)
[above was repeated many times]
AAC: Host adapter BLINK LED 0x62
AAC0: adapter kernel panic'd 62.
sd 0:0:0:0: timing out command, waited 360s
sd 0:0:0:0: Unhandled error code
sd 0:0:0:0: SCSI error: return code = 0x06000000
Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT,SUGGEST_OK
sd 0:0:0:0: timing out command, waited 360s
sd 0:0:0:0: Unhandled error code
sd 0:0:0:0: SCSI error: return code = 0x06000028
Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT,SUGGEST_OK
sd 0:0:0:0: timing out command, waited 360s
sd 0:0:0:0: Unhandled error code
sd 0:0:0:0: SCSI error: return code = 0x06000028

Вот номера моделей RAID-контроллеров Adaptec, которые перечислены в примечаниях к обновлению прошивки с высоким разрешением на зависание ввода/вывода: 2045, 2405, 2405Q, 2805, 5085, 5405, 5405Z, 5445, 5445Z, 5805, 5805Q, 5805Z, 5805ZQ, 51245, 51645, 52445.

.
3
ответ дан 28 November 2019 в 20:10

Ядро, которое включает "WBT":

Улучшения на уровне блоков , LWN.net

С регулированием обратной записи [уровень блоков] пытается получить максимальную производительность без чрезмерной задержки ввода-вывода с использованием стратегии, заимствованной у сетевого планировщика CoDel. CoDel отслеживает наблюдаемую минимальную задержку сетевых пакетов и, если она превышает пороговое значение, начинает отбрасывать пакеты. Отказ от записи не одобряется в подсистеме ввода-вывода, но используется аналогичная стратегия: ядро ​​отслеживает минимальную задержку как чтения, так и записи, и, если она превышает пороговое значение, начинает уменьшать объем фоновой обратной записи. это делается. Это поведение было добавлено в 4.10; Axboe сказал, что были замечены довольно хорошие результаты.

WBT не требует переключения на новый блочный уровень blk-mq. Тем не менее, он не работает с планировщиками ввода-вывода CFQ или BFQ. Вы можете использовать WBT с планировщиками deadline / mq-deadline / noop / none. Я считаю, что он также работает с новым планировщиком ввода-вывода "kyber".

Помимо масштабирования размера очереди для управления задержкой, код WBT ограничивает количество фоновых запросов обратной записи в пропорции от рассчитанный предел очереди.

Конфигурация времени выполнения находится в / sys / class / block / * / queue / wbt_lat_usec .

Параметры конфигурации сборки, которые следует искать:

/boot/config-4.20.8-200.fc29.x86_64:CONFIG_BLK_WBT=y
/boot/config-4.20.8-200.fc29.x86_64:# CONFIG_BLK_WBT_SQ is not set
/boot/config-4.20.8-200.fc29.x86_64:CONFIG_BLK_WBT_MQ=y

Постановка проблемы подтверждается на 100% автор WBT - молодец: -).

[PATCHSET] блок: регулирование буферизованной обратной записи

С незапамятных времен наша фоновая буферизованная обратная запись была отстойной. Когда мы выполняем обратную запись с фоновой буферизацией, это не должно иметь большого влияния на переднем плане деятельности. Это определение фона деятельности ... Но сколько я себя помню, писатели с тяжелым буфером не вели себя так. Например, если я сделаю что-то вроде этого:

 $ dd if = / dev / zero of = foo bs = 1M count = 10k
 

на моем ноутбуке, а затем попробуйте запустить Chrome, он не запускается до выполнения буферизованной обратной записи. Или для ориентированного на сервер рабочие нагрузки, при которых установка большого RPM (или аналогичного) неблагоприятно влияет на чтение базы данных или синхронизацию записи. Когда это происходит, я получаю людей кричит на меня.

Результаты недавних тестов можно найти здесь:

https://www.facebook.com/axboe/posts/10154074651342933

Более подробное описание набора исправлений см. в предыдущих публикациях.

1
ответ дан 28 November 2019 в 20:10

Теги

Похожие вопросы