Устранение неполадок и управление проблемами загрузки ЦП и памяти
- каталоги proc и sys управляют аппаратными ресурсами
ls /
cd /proc
cat cpuinfo
less cpuinfo | grep processor
Ограничения мощности процессора
Если это число составляет 75 % или более емкости, то приложение почти требует больше ресурсов. Чтобы справиться с этим:
- Уменьшить нагрузку
- Добавить аппаратную мощность
Использование команд для управления загрузкой процессора и памяти:
uptime
# Four Processor
# 1.0 = 25% capacity
# 2.0 = 50% capacity
top
# press `c` in the top command prompt to get the full path of the command executing
# press `d` to change the refresh time of the top command (i.e delay time)
# press `k` to kill the process
# press `Shift + p` to sort the process by CPU utilization
# press`Shift + h` to display threads
# press `Shift + v` to get child-parent structure
# press 1 to get total CPUs
# press `u` to get specific user processes
# press `h` for help
journalctl _PID=<process_id>
Использование памяти
- Физическая память (ОЗУ)
- SWAP (выделенное место на диске)
- Кэширование диска (ОЗУ заимствовано для использования приложения)
cat /proc/meminfo
free -h
vmstat
# vmstat display
r: Total number of processes waiting for CPU time
b: Total number of blocked processes, waiting for disk or network IO
swpd: Used virtual memory
free: Free virtual memory
buff: Memory used as a buffer (whats in directories, permission)
cache: Memory used as Cache
si: Memory swapped from disk every second
so: Memory swapped to disk every second
bi: Blocks in per second
bo: Blocks out per second
in: Interrupts per second
cs: Context switches per second
# memory usage in MB
vmstat -S M
# Display used/inused memory
vmstat -a
# Running with delay and repeated times
vmstat 5 3 # run 3 times with 5 seconds delay
## Free up memory space Immediately
free -m
sync
sudo bash -c "echo 3 > /proc/sys/vm/drop_caches"
free -m
Управление использованием ЦП и памяти с помощью cgroups
# create a group: testgroup, -a: username
cgcreate -a izhar -g cpu:testgroup
cd /sys/fs/cgroup
cd cpu
cat cpu.cfs_period_us
# running command
cgexec -g cpu:testgroup <cmd/program>
cd /sys/fs/cgroup/memory
ls
cat memory.limit_in_bytes
cgcreate -a izhar -g memory:newgroup
# set memory limit
cgset -r memory.limit_in_bytes=512m newgroup
cgexec -g memory:newgroup <cmd/program>
Проблемы с хранилищем и сетью
# controlling logs
ls /var/log
# setting for logs
cat /etc/logrotate.conf
# default setting for logs
cat /etc/logrotate.d/ufw
# journald logs
ls /var/log/journal/
less /etc/systemd/journald.conf
Работа с Inode
+-----------+-------+
| File Name | Inode |
+-----------+---|---+
|
+-------------|------+-----+-----+--------------+----------------+
| Last Access | Size | UID | GID | Direct Links | Indirect Links |
+--------------------+-----+-----+-----------|--+----------------+
+------------+------------+------------+---|
| Data Block | Data Block | Data Block |
+------------+------------+------------+
df -ih
# finding files with highest number of inodes
find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
Пропускная способность сети
iftop -i <networkcard>
# in new terminal run commands like curl https://google.com to monitor traffic
nethogs <networkcard>
https://mdizharblog.hashnode.dev/managing-and-troubleshooting-linux-performance