튜닝 시스템 성능
튜닝 구성 파일 조정
시스템 튜닝
관리자는 장치 설정을 조정하여 여러 사용 사례 작업 부하에 따라 시스템 성능을 최적화할 수 있습니다. tuned 데몬은 특정 작업 부하 요구 사항을 반영하는 튜닝 프로필을 사용하여 동적으로/정적으로 튜닝됩니다.
정적 튜닝 구성
tuned 데몬은 서비스가 시작되거나 새 튜닝 프로필이 선택될 때 시스템 설정을 적용합니다. 정적 튜닝은 런타임 시 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 수준 값의 범위는 -20(최고)부터 19(최저)까지입니다. 기본적으로 프로세스는 상위 프로세스의 nice 수준(보통 0)을 상속합니다. nice 수준이 높을수록 우선순위는 낮아집니다.
좋은 수준 및 권한 설정
CPU를 많이 사용하는 프로세스에 대해 낮은 nice 수준을 설정하면 동일한 시스템에서 실행되는 다른 프로세스의 성능에 부정적인 영향을 미칠 수 있습니다. 루트 사용자만 nice 수준을 낮출 수 있습니다.
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 레벨과 우선순위라는 두 개의 열이 표시됩니다. 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