Работа с железом
Оборудование
Информация о материнской плате
lshw -class system lshw | grep -A4 "\*\-core"
Информация о BIOS
lshw | grep -A8 "\*\-firmware"
Информация о модулях ядра / драйверах
# пример поиска информации о драйвере HBA Fibre Channel lshw | grep -A 20 -B 20 Fibre # находим имя модуля ядра (драйвера) # подстрока driver=lpfc # смотрим информацию по версии модуля (драйвера) modinfo lpfc | grep version
Система охлаждения
# температура всех датчиков cat /sys/class/thermal/thermal_zone*/temp # текущее состояние вентиляторов cat /sys/class/thermal/cooling_device*/cur_state # максимальное состояние вентиляторов (зафиксированное или предельное?) cat /sys/class/thermal/cooling_device*/max_state # выключение вентилятора 1 echo 0 > /sys/class/thermal/cooling_device1/cur_state
Проверка состояния подачи питания на ноутбук
cat /sys/class/power_supply/AC0/uevent
Проверка батареи ноутбука
# свод по всем параметрам cat /sys/class/power_supply/BAT0/uevent # заряд в процентах cat /sys/class/power_supply/BAT0/capacity
Память
# планки памяти lshw -class memory # для сброса кэшей нужно записать в файл число /proc/sys/vm/drop_caches slabtop - показывает распределение кэша cat /proc/meminfo vmstat -s top htop demidecode -t 17 # процессы ps -eo size,pid,user,command | awk '{ hr=$1/1024 ; printf("%13.6f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | sort # Если много в Inactive, то возможно поможет это # To free pagecache: sync && echo 1 > /proc/sys/vm/drop_caches # To free dentries and inodes: sync && echo 2 > /proc/sys/vm/drop_caches # To free pagecache, dentries and inodes: sync && echo 3 > /proc/sys/vm/drop_caches
Процессор
Информация о процессоре
lscpu cat /proc/cpuinfo
Управление процессором
# проверка частоты ядра 0 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq # изменение пределов частоты ядра 0 echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo 1500000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq # выключение ядра 1 echo 0 > /sys/devices/system/cpu/cpu1/online # включение ядра 1 echo 1 > /sys/devices/system/cpu/cpu1/online
SMT (Simultaneous multithreading) - технология одновременного выполнения нескольких потоков на одном ядре, в Inel имеет название Hyper Threading
# отключение SMT в загрузчике GRUB grubby --args=nosmt --update-kernel=DEFAULT # проверка текущего статуса SMT cat /sys/devices/system/cpu/smt/control # on - SMT включен # off - SMT выключен но его можно включить # forceoff - SMT выключен но его нельзя включить без перезагрузки (либо выключен параметром при загрузке ядра, либо выключен записью в контрольный файл данного состояния) # notsupported - не поддерживается процессором # выключение SMT, до следующей перезагрузки echo off > /sys/devices/system/cpu/smt/control
Есть уязвимости, использующие SMT, обычно решается фиксами, но иногда решают отключением SMT
При установке Oracle Linux 8.8, если включен SMT, то выдается предупреждение с отсылкой на эту статью
Диски
Проверка S.M.A.R.T дисков
# установка dnf install smartmontools # вывод S.M.A.R.T для /dev/sda smartctl -A /dev/sda
Размер физического блока диска
cat /sys/block/sda/queue/physical_block_size
Размер логического блока диска
cat /sys/block/sda/queue/logical_block_size
Тесты
dnf install stress-ng # жесткий стресс тест памяти stress-ng --vm 8 --vm-bytes 15% --vm-method all --verify -t 10m # --vm количество процессов (workers) # --vm-bytes объем памяти на каждый процесс # -t продолжительность теста
Результат теста на компе с проблемой памяти (CPU: 4 core 8 threads, RAM: 2x8G)
[root]# stress-ng --vm 8 --vm-bytes 15% --vm-method all --verify -t 10m stress-ng: info: [5082] setting to a 600 second (10 mins, 0.00 secs) run per stressor stress-ng: info: [5082] dispatching hogs: 8 vm stress-ng: fail: [5094] prime-one: detected 2 memory errors stress-ng: fail: [5091] prime-one: detected 1 memory error stress-ng: fail: [5095] prime-one: detected 1 memory error stress-ng: fail: [5094] prime-gray-one: detected 1 memory error stress-ng: fail: [5096] prime-gray-one: detected 1 memory error stress-ng: fail: [5093] prime-gray-one: detected 1 memory error stress-ng: fail: [5095] prime-gray-one: detected 1 memory error stress-ng: fail: [5094] cache-stripe: detected 1 memory error stress-ng: fail: [5097] flip: detected 1 memory error stress-ng: fail: [5096] galpat-zero: detected 1 memory error stress-ng: fail: [5098] rowhammer: detected 1 memory error stress-ng: fail: [5098] swap bytes: detected 1 memory error stress-ng: fail: [5098] moving inversion: detected 1 memory error stress-ng: fail: [5092] moving inversion: detected 1 memory error stress-ng: fail: [5096] moving inversion: detected 1 memory error stress-ng: fail: [5095] moving inversion: detected 1 memory error stress-ng: fail: [5093] modulo X: detected 1 memory error stress-ng: fail: [5097] prime-zero: detected 1 memory error stress-ng: fail: [5093] prime-zero: detected 1 memory error stress-ng: fail: [5095] prime-zero: detected 1 memory error stress-ng: fail: [5096] prime-zero: detected 2 memory errors stress-ng: fail: [5097] prime-one: detected 2 memory errors stress-ng: fail: [5094] prime-one: detected 1 memory error stress-ng: fail: [5098] prime-gray-zero: detected 3 memory errors stress-ng: fail: [5093] prime-gray-zero: detected 2 memory errors stress-ng: fail: [5090] vm: detected 6 bit errors while stressing memory stress-ng: fail: [5088] vm: detected 5 bit errors while stressing memory stress-ng: fail: [5087] vm: detected 4 bit errors while stressing memory stress-ng: fail: [5086] vm: detected 5 bit errors while stressing memory stress-ng: fail: [5085] vm: detected 5 bit errors while stressing memory stress-ng: fail: [5083] vm: detected 1 bit errors while stressing memory stress-ng: error: [5082] process [5083] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: fail: [5089] vm: detected 4 bit errors while stressing memory stress-ng: fail: [5084] vm: detected 1 bit errors while stressing memory stress-ng: error: [5082] process [5084] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: error: [5082] process [5085] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: error: [5082] process [5086] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: error: [5082] process [5087] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: error: [5082] process [5088] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: error: [5082] process [5089] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: error: [5082] process [5090] (vm) terminated with an error, exit status=2 (stressor failed) stress-ng: info: [5082] unsuccessful run completed in 600.39s (10 mins, 0.39 secs)
Результат теста после удаления 1 планки, 2 контроллер
[root]# stress-ng --vm 8 --vm-bytes 15% --vm-method all --verify -t 10m stress-ng: info: [7556] setting to a 600 second (10 mins, 0.00 secs) run per stressor stress-ng: info: [7556] dispatching hogs: 8 vm stress-ng: info: [7556] successful run completed in 600.08s (10 mins, 0.08 secs)