Работа с железом

Материал из sysadm
Перейти к навигации Перейти к поиску

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

Информация о материнской плате

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)