システムパフォーマンスのチューニング
チューニング設定ファイルを調整する
システムのチューニング
管理者はデバイス設定を調整して、複数のユースケースのワークロードに基づいてシステムのパフォーマンスを最適化できます。調整されたデーモンは、特定のワークロード要件を反映する調整プロファイルを使用して動的/静的に調整されます。
静的チューニングを構成する
tuned デーモンは、サービスの開始時、または新しい調整プロファイルの選択時にシステム設定を適用します。静的チューニングでは、構成ファイル内に事前定義されたカーネル パラメータが構成され、実行時にチューニングによって適用されます。
動的チューニングを構成する
Tuned はシステムアクティビティを監視し、動作動作の変化に基づいて設定を調整します。
[root@workstation ~]# yum install tuned -y
[root@workstation ~]# systemctl enable --now tuned
[root@workstation ~]# systemctl status tuned
● tuned.service - Dynamic System Tuning Daemon
Loaded: loaded (/usr/lib/systemd/system/tuned.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-07-19 10:03:01 EDT; 1min 0s ago
Docs: man:tuned(8)
man:tuned.conf(5)
man:tuned-adm(8)
Main PID: 7507 (tuned)
CGroup: /system.slice/tuned.service
└─7507 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
Jul 19 10:03:00 workstation systemd[1]: Starting Dynamic System Tuning Daemon...
Jul 19 10:03:01 workstation systemd[1]: Started Dynamic System Tuning Daemon.
調整プロファイルの選択
Tuned は次の構成ファイルを提供します。
- エネルギー効率
- パフォーマンス
パフォーマンスを向上させる構成ファイル:
- ストレージ/ネットワークの低遅延
- ストレージ/ネットワークの高スループット
- 仮想マシンのパフォーマンス
tuned-adm は、tuned デーモンの設定を変更するために使用されます。
#确定当前活动调优的配置文件
[root@workstation ~]# tuned-adm active
Current active profile: virtual-guest
#列出可用配置文件
[root@workstation ~]# tuned-adm list
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- hpc-compute - Optimize for HPC compute workloads
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
Current active profile: virtual-guest
#切换活动配置文件为更符合系统调优要求的其他配置文件
[root@workstation ~]# tuned-adm profile throughput-performance
[root@workstation ~]# tuned-adm active
Current active profile: throughput-performance
#为系统推荐调优配置文件
[root@workstation ~]# tuned-adm recommend
virtual-guest
#回复当前配置文件所作设置更改
[root@workstation ~]# tuned-adm off
[root@workstation ~]# tuned-adm active
No current active profile.
プロセスの進行状況に影響を与える
相対的な優先度
プロセスが異なれば重要性も異なります。プロセス スケジューラは、プロセスごとに異なるスケジューリング ポリシーを使用するように構成できます。従来のシステムで実行されているほとんどのプロセスのスケジューリング ポリシーは SCHED_OTHER と呼ばれます。
すべてのプロセスが同じように重要であるわけではないため、プロセス ナイス値と呼ばれるポリシーを通じて優先度を設定できます。どのプロセスでも、40 の異なるレベルの Nice 値に編成できます。
Nice レベルの値の範囲は -20 (最高) から 19 (最低) です。デフォルトでは、プロセスは親プロセスの nice レベル (通常は 0) を継承します。nice レベルが高くなるほど、優先度は低くなります。
適切なレベルと権限を設定する
CPU 負荷の高いプロセスに対してより低い nice レベルを設定すると、同じシステム上で実行されている他のプロセスのパフォーマンスに悪影響を及ぼす可能性があります。nice レベルを下げることができるのは、root ユーザーのみです。
Tasks: 101 total, 1 running, 100 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995896 total, 605916 free, 134648 used, 255332 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 678000 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7893 root 20 0 161880 2192 1556 R 0.7 0.2 0:00.11 top
7703 root 20 0 0 0 0 S 0.3 0.0 0:02.34 kworker/0:0
1 root 20 0 128152 6708 4176 S 0.0 0.7 0:01.66 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.20 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.42 kworker/u256:0
top コマンドは、プロセスを対話的に表示および管理できます。デフォルト設定では、nice レベルと優先度の 2 つの列が表示されます。NI はプロセスの nice 値を表示し、PR はスケジューリング優先度を表示します。
素晴らしい価値を示す
[root@workstation ~]# ps axo pid,comm,nice,cls --sort=-nice
PID COMMAND NI CLS
32 khugepaged 19 TS
31 ksmd 5 TS
1 systemd 0 TS
2 kthreadd 0 TS
3 ksoftirqd/0 0 TS
6 kworker/u256:0 0 TS
7 migration/0 - FF
8 rcu_bh 0 TS
9 rcu_sched 0 TS
11 watchdog/0 - FF
13 kdevtmpfs 0 TS
15 khungtaskd 0 TS
異なる Nice レベルでプロセスを開始する
#开启一个后台作业
[root@workstation ~]# sha1sum /dev/zero &
[1] 7897
#新进程nice值从0继承(shell进程ni值为0,是作业的父进程)
[root@workstation ~]# ps -o pid,comm,nice 7897
PID COMMAND NI
7897 sha1sum 0
[root@workstation ~]# nice -n 15 top&
[1] 7940
#更改nice值
[root@workstation ~]# ps -o pid,comm,nice 7940
PID COMMAND NI
7940 top 15
[root@workstation ~]# renice -n 19 7940
7940 (process ID) old priority 15, new priority 19