Как стать автором
Обновить

ZFS таинственным образом поедает мой CPU

Время на прочтение5 мин
Количество просмотров18K
Всего голосов 32: ↑30 и ↓2+37
Комментарии28

Комментарии 28

Обалденный перевод. читается круче любого детектива. и такая неожиданная развязка...

Да, блог Брендана Грегга всегда интересно читать. Один легендарный пост про подсчёт load average чего стоит.

хм. а теперь кто-нибудь объясните мне, зачем ZFS вообще была включена в ядре, если она не использовалась?

Как-будто вот все пересобирают под себя постоянно ядро, включая и выключая необходимые фичи. Тем более что фиг угадаешь какая фича будет необходима через полгода. Была себе там поддержка zfs - ну, пусть себе будет. Пока мы её не используем - она ведь не должна никак влиять, правда? Баг был именно в zfs, которая заставляла "платить" за себя даже того, кто её не использовал.

лучше в блэклист добавить

вот я как раз об этом, на продакшен системе, все ненужные для функционирования этой самой продакшен системы фичи должны быть эффективно потушены. blacklist ли это, пересборка ли это - в данном контексте не суть важно

на продакшен системе, все ненужные для функционирования этой самой продакшен системы фичи должны быть эффективно потушены

Потушены с оговоркой "на продакшене" -> гарантированно ловим баги, не воспроизводящиеся на "непродакшене". Не надо так.

Если у них ядро используется в 50-и разных местах, то может быть удобнее иметь одно ядро со всеми включенными опциями, чем 50 разных сборок.

Кроме того, наверняка тот, кто это ядро настраивал рассчитывал что драйвер файловой системы будет использоваться только если она смонтирована. Это довольно разумное предположение.

Еще бы узнать, что вызывает на винде System Interrupts загрузку проца в 100%, когда система не используется. Не удивлюсь если там что-то похожее.

У меня после того как залил ноутбук помогает отключить контроллер USB в device manager

Ну это один из вариантов, который обычно предлагают, только вот как при этом работать на компе с USB клавиатурой и мышкой?

Руткит с майнером?

Смех смехом, а недавно в одной железячной конфе был вопрос «помогите, у меня 3 из 4 ядер загружены на 100%, но как только открываю диспетчер задач, то всё по нулям». В итоге, человек нашёл у себя в системе сразу несколько майнеров.

А это и не было смехом, кстати.

Тоже процесс system выжирает cpu. Причем после того как пытается понизить частоту до 0.8 ггц, типа сэкономить, загрузка цп поднимается до 100% и висит так часами, ревя вентилятором. Частота подростает при любой пользовательской активности и загрузка цп падает в 0. Так и не смог победить, видать особенность асуса... Вирусов тоже не нашлось. Может подскажете что?

ну я не думаю, что после переустановки винды там это сразу появляется. тем более без подключения интернета. прикол в том, что там уйма причин, почему это возникает. но при этом в винде нет нормальной софтины, которая бы точно указала на причину.

Тогда кривые/непатченные драйвера какого-то оборудования, Т.е. мало данных.

Тут неплохо было бы уточнить, что такое System Interrupts.
В Windows прерывания обычно обрабатываются в 2 стадии.
Первая — это первоначальная обработка прерывания, на уровне IRQL устройства, блокирующая менее приоритетные прерывания. Руковдства рекомендуют делать ее максмально краткой, и она обычно ограничивается фиксацией состояния устройства и, если дальнешая обработка необходима — постановкой элемента для этого в очередь отложенной обработки (DPC). Процент времени процессора, приходящийся на эту стадию показывает счетчик монитора производительности %Interrupt time.
Вторая — эта самая отложенная обработка, которая выполняет основную работу по обработке прерывания. Она производится на уровне IRQL DPC/Dispatch (на том же, на котором выполняется планировщик) при разрешенных прерываниях. И процент времени процессора, приходящийся на эту стадию показывает другой счетчик монитора производительности — %DPC time. Так что в системе есть два разных счетчика, но некоторые утилиты отображения информации могут их свести в один.
Если велик именно %Interrupt Time, то дело — в слишком часто приходящих прерываниях (для скорости их прихода, кстати, тоже сеть счетчик). Это может быть неисправное устройство или, к примеру, сетевая карта в неизбирательном (promiscuous) режиме в хорошо загруженной сети.
Как искать такоеустройство без отладчика (или последовательго отключения подозрительных устройств) я даже и не знаю.
DPC же могут порождать не только прерывания, но и другие механизмы ядра. Там думать надо по месту.

А насколько эти события реально "грузят" процессор? То есть это виртуальная загрузка процессора или реальная? Потому что на моей системе вроде вполне реальная, потому что процессор греется также, как при реальной полной загрузке.

Это вполне реальная загрузка: процессор в это время исполняет код.

Возможно, проблема аппаратная: какое-то usb-устройство выгорело, и теперь постоянно генерирует прерывания.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Можно брать их по очереди, но разработчик решил, что лучше выбрать наугад.
Криптографически безопасный рандом.

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

Потому что код криптографически безопасного генератора уже был под рукой

почему вообще надо что-то выбирать? может просто всегда первый?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий