100% процессора на 4 из 8 ядер в Oracle Linux

Вопрос или проблема

У меня есть настольный компьютер (Intel i4770), на котором работает Oracle Linux 7.9 с ядром 4.1.12-61. Обычно я его выключаю и включаю только в редкие моменты, когда мне нужно что-то протестировать. Месяц назад я включил его и заметил, что вентиляторы работают на максимальной скорости – я проверил top и услышал, что setroubleshoot загружен на 100%, поэтому я убил этот процесс. Процесс продолжал возвращаться, и я снова его убивал, но в конечном итоге это не имело большого значения, потому что мои тесты были завершены, и я снова выключил компьютер. (Да, я всегда выключаю его корректно.)

Теперь пытаясь разобраться в проблеме, setroubleshoot больше не показывает 100% в top. На самом деле, ничего даже близко к 100%. Запустив htop, я вижу детали о процессорах, и 4 из 8 ядер постоянно загружены на 100%. С момента, когда компьютер позволяет мне войти в систему, до момента, когда я его выключаю. Но в списке процессов нет ничего выше 5.2%.
htop показывает 4 * 100% без процессов, которые бы этому способствовали

Когда я запускаю perf на каждом ядре с perf top -C 1 --sort comm, я вижу, что ядра с 0 по 3 загружены на 100% в пространстве ядра.
вставьте описание изображения здесь

Вот отчет perf, полученный при выполнении perf record -a -F 999 -- sleep 10. Я не знаю, указывает ли сбой в нахождении полезных символов на проблему, которую я ищу, является ли это другой проблемой, в решении которой мне понадобится помощь, или же это что-то, что следует игнорировать.
вставьте описание изображения здесь

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

И просто чтобы подтвердить, что htop прав относительно своих отчетов, вот отчет из Системного Монитора.
Отображение системного монитора, показывающее 8 ядер с 4 на 100%

Загрузка предыдущей версии ядра не помогла. И загрузка в “резервное” ядро тоже не помогла.

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

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

Я не знаю, как дальше дебажить. Я не могу понять, что изменилось и почему, поэтому не знаю, как начать его исправление. Любая помощь по тому, куда смотреть и что проверять, будет оценена!

___ Редактирование 1: ___

Вывод из ps -efl|sort -rk14|head:

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY       TIME CMD
0 S gdm       2085  2041  2  80   0 - 905731 -     17:42 ?        00:00:02 /usr/bin/gnome-shell
4 S root         1     0  1  80   0 - 54811 -      17:41 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4 S root       837     1  1  80   0 - 22671 -      17:42 ?        00:00:01 /sbin/rngd -f
1 S root       405     2  0  60 -20 -     0 -      17:41 ?        00:00:00 [xfs_mru_cache]
1 S root       407     2  0  60 -20 -     0 -      17:41 ?        00:00:00 [xfs-data/sda1]
1 S root       408     2  0  60 -20 -     0 -      17:41 ?        00:00:00 [xfs-conv/sda1]
1 S root       409     2  0  60 -20 -     0 -      17:41 ?        00:00:00 [xfs-cil/sda1]
1 S root       406     2  0  60 -20 -     0 -      17:41 ?        00:00:00 [xfs-buf/sda1]
1 S root       404     2  0  60 -20 -     0 -      17:41 ?        00:00:00 [xfsalloc]

вывод из dmesg | grep libsystem

[    3.344918] audit: type=1400 audit(1731105719.768:4): avc:  denied  { execute } for  pid=496 comm="systemd-journal" path="/usr/local/lib/libsystem.so" dev="sda1" ino=136977390 scontext=system_u:system_r:syslogd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0
[    3.351928] audit: type=1400 audit(1731105719.775:6): avc:  denied  { execute } for  pid=502 comm="systemd-readahe" path="/usr/local/lib/libsystem.so" dev="sda1" ino=136977390 scontext=system_u:system_r:readahead_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0
[    3.351929] audit: type=1400 audit(1731105719.775:5): avc:  denied  { execute } for  pid=503 comm="systemd-readahe" path="/usr/local/lib/libsystem.so" dev="sda1" ino=136977390 scontext=system_u:system_r:readahead_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0
[    3.374010] audit: type=1400 audit(1731105719.797:7): avc:  denied  { execute } for  pid=513 comm="systemd-tmpfile" path="/usr/local/lib/libsystem.so" dev="sda1" ino=136977390 scontext=system_u:system_r:systemd_tmpfiles_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0
[    3.386383] audit: type=1400 audit(1731105719.810:8): avc:  denied  { execute } for  pid=525 comm="systemd-sysctl" path="/usr/local/lib/libsystem.so" dev="sda1" ino=136977390 scontext=system_u:system_r:systemd_sysctl_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0
[    3.397457] audit: type=1400 audit(1731105719.821:9): avc:  denied  { execute } for  pid=536 comm="hostname" path="/usr/local/lib/libsystem.so" dev="sda1" ino=136977390 scontext=system_u:system_r:hostname_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0
[    3.673352] audit: type=1400 audit(1731105720.097:10): avc:  denied  { execute } for  pid=657 comm="alsactl" path="/usr/local/lib/libsystem.so" dev="sda1" ino=136977390 scontext=system_u:system_r:alsa_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file permissive=0

Ответ или решение

Анализ проблемы с 100% загрузкой CPU на Oracle Linux: пошаговое руководство

Введение

Ситуация с загрузкой 100% CPU на 4 из 8 ядер в вашей системе Oracle Linux 7.9 нуждается в детальном анализе. Это может быть связано с различными факторами, включая конфликты с SELinux, ошибки в программном обеспечении или неисправности в системе. Давайте рассмотрим возможные причины и способы их устранения.

Шаг 1: Анализ загрузки процессора

Ваша проблема заключается в том, что 4 ядра работают на 100% по времени, в то время как вы не видите явных процессов, которые это вызывают. Использование утилиты perf показало, что загрузка CPU возникает на уровне ядра, что указывает на проблемы, связанные с операционной системой.

Рекомендации:
  • Запустите команду top и htop, чтобы убедиться, что действительно нет процессов, потребляющих много ресурсов.
  • Используйте perf top -C <номер ядра> для выявления каких-либо проблемных вызовов.

Шаг 2: Анализ сообщений SELinux

Ваши логи SELinux указывают на то, что некоторые процессы были заблокированы в доступе к файлам. Это может быть одной из причин высокой загрузки CPU, так как система пытается переработать запросы на доступ к ресурсам.

Рекомендации:
  • Проверьте, какие именно файлы и процессы блокируются. Используйте команду audit2allow для генерации правил, которые могут помочь.
  • Рассмотрите возможность временного отключения SELinux для проверки, исчезает ли проблема. Это можно сделать через setenforce 0, но это следует делать только для тестирования.

Шаг 3: Исследование файловой системы

Очевидно, что при установке новой ОС на внешний диск проблема исчезла, что указывает на возможные проблемы с вашей основной файловой системой.

Рекомендации:
  • Запустите fsck на основной файловой системе для проверки и исправления возможных ошибок.
  • Обратите внимание на наличие недостатков в блоках или других аномалий.

Шаг 4: Устранение неполадок с программным обеспечением

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

Рекомендации:
  • Проверьте наличие поврежденных пакетов командой rpm -Va.
  • Если у вас есть какие-либо программные файлы в /usr/local/lib/, которые могли быть изменены, рассмотрите возможность удаления их дубликатов.

Шаг 5: Обновление системы и ядра

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

Рекомендации:
  • Продолжайте следить за обновлениями системы, связанными с ядром и SELinux. Иногда патчи могут решить проблемы загрузки.
  • Рассмотрите возможность обновления до более новой версии Oracle Linux, если это возможно.

Заключение

Выявление причины постоянной загрузки 100% CPU в Linux может быть сложной задачей, требующей системного подхода и внимательности к деталям. Следуйте представленным рекомендациям, фиксируйте изменения и тщательно документируйте поведение системы после внесения каждого изменения. Если все рекомендации не дают результатов, рассмотрите обращение к специалистам по поддержке Oracle Linux для более глубокой диагностики проблемы.

Оцените материал
Добавить комментарий

Капча загружается...