系统性能调优学习笔记03

author author     2023-02-17     467

关键词:

1、proc文件系统

1.1 系统proc目录描述

proc文件系统proc文件系统是一个伪文件系统,它提供了到内核数据结构的接口,内核在引导时将proc文件系统挂载到/proc目录上。/proc目录中的文件具有与它们所引用的参数相匹配的权限,例如对于静态信息是只读的,对于可配置设置和内核可调项是可写的。

伪文件系统中的文件(例如proc)表示其他更复杂的结构,一些/proc文件有效地指向单个内核参数,而其他/proc文件调用例程来收集多个数据并将该信息表示为流,其外观和行为与普通文件类似。在允许的情况下,编辑/proc文件中的设置与直接编辑内核参数字段相同。例如,vmstat命令读取/proc/meminfo文件,该文件提供关于系统内存使用情况的各种信息。

在开发proc文件系统之前,开发人员编写代码来访问和解析许多不同类型的内核结构以获取和设置参数,这需要理解复杂的内核结构并维护程序代码以匹配已发布的内核增强功能。通过提供proc伪文件系统作为具有传统的基于文件的语义(如打开、读取和写入)的公共接口,程序员不再需要使用内部结构进行编程。开发人员现在编写程序,使用稳定/ proc文件名访问内核参数,这些文件名在内核更新中保持一致。

/proc目录中的文件是在使用静态内核加载相应的内核结构时动态创建的,或者在引导期间或稍后运行时加载动态内核模块或驱动程序时动态创建的。

proc下目录

说明

/proc/cpuinfo

提供有关处理器的信息

/proc/meminfo

提供有关物理内存和交换内存使用情况的信息

/proc/swaps

提供交换空间利用率信息

/proc/PID/

提供系统上运行的特定进程的信息

/proc/

目录下的子目录名就是进程的进程ID

/proc/cmdline

提供最近用于引导此内核的内核参数和选项

[root@test01 /proc]# ls
1 173 22 45 5128 597 857 936 diskstats loadavg sys
10 175 23 451 52 599 861 941 dma locks sysrq-trigger
11 176 24 453 5249 6 862 950 driver mdstat sysvipc
12 1766 26 46 5268 601 863 951 execdomains meminfo thread-self
1220 1768 27 467 53 602 869 952 fb misc timer_list
1226 1793 28 468 5379 603 871 966 filesystems modules tty
1229 1796 29 469 5439 604 893 982 fs mounts uptime
1236 18 3 47 5470 605 896 985 interrupts mtrr version
1240 1805 30 470 5513 705 898 988 iomem net vmallocinfo
1251 1806 32 473 553 745 899 994 ioports pagetypeinfo vmstat
1253 1833 37 48 5539 77 9 acpi irq partitions zoneinfo
13 1841 38 49 5551 770 900 buddyinfo kallsyms sched_debug
14 1842 39 50 5591 828 907 bus kcore schedstat
15 1844 4 500 5610 829 909 cgroups keys scsi
16 1845 40 5029 5611 830 910 cmdline key-users self
17 1846 41 503 5622 831 911 consoles kmsg slabinfo
170 2 42 504 565 832 915 cpuinfo kpagecgroup softirqs
171 20 43 5088 591 833 922 crypto kpagecount stat
172 21 44 51 593 834 934 devices kpageflags swaps

进入PID=1(root)的目录查看

[root@test01 /proc]# cd 1
[root@test01 /proc/1]# ls
attr cpuset loginuid numa_maps sched status
autogroup cwd map_files oom_adj schedstat syscall
auxv environ maps oom_score sessionid task
cgroup exe mem oom_score_adj setgroups timens_offsets
clear_refs fd mountinfo pagemap smaps timers
cmdline fdinfo mounts patch_state smaps_rollup timerslack_ns
comm gid_map mountstats personality stack uid_map
coredump_filter io net projid_map stat wchan
cpu_resctrl_groups limits ns root statm

1.2 内核可调参数

通过调整/proc/sys/目录,可以对系统内核立即进行调整

尽管为调优目的所做的更改有望改善系统行为,但修改/proc/sys可调项也可能对其他生产工作负载和系统产生不利影响。

例如:增加内核分配的TCP内存缓冲区的大小可以提高网络吞吐量。但是,这种更改会导致内核为系统建立或接收的每个TCP连接使用更多的内存。具有大量网络连接的系统将消耗更多内存,从而限制了用户空间应用程序可用的内存。

由于所有/proc/sys文件更改都直接写入内存中的内核,因此在重新启动时更改不会持久,内核可调设置将恢复到内核模块的默认设置,除非在适当的配置文件中持久化配置,/proc/sys目录树包含几个用于内核可调参数的子目录

/proc/sys可调参数的子目录

说明

/proc/sys/dev

包含适用于RAID设备、CD-ROM、SCSI设备和一个或多个并行端口等系统设备的可调参数

/proc/sys/fs

包含文件系统相关的可调参数。例如:配额处理参数

/proc/sys/kernel

包含更改内核内部工作方式的可调参数。例如:共享内存设置。

/proc/sys/net

包含更改网络设置的可调参数。例如:接收和发送套接字缓冲区大小。

/proc/sys/vm

包含改变内核虛拟内存管理的可调参数。例如:大页面的数量。

[root@test01 ~]# cd /proc/sys
[root@test01 /proc/sys]# ls
abi crypto debug dev fs kernel net sunrpc user vm

[root@test01 /proc/sys]# ls -l /proc/sys/kernel/osrelease
-r--r--r--. 1 root root 0 Feb 15 13:28 /proc/sys/kernel/osrelease
[root@test01 /proc/sys]# ls -l /proc/sys/kernel/threads-max
-rw-r--r--. 1 root root 0 Feb 15 13:28 /proc/sys/kernel/threads-max

# osrelease文件包含操作系统版本,该版本只会在操作系统更新期间修改,而不会手动修改
[root@test01 /proc/sys]# cat /proc/sys/kernel/osrelease
4.18.0-269.el8.x86_64
# threadmax文件是可写的,可以通过编辑来设置并发进程线程的最大数量
[root@test01 /proc/sys]# cat /proc/sys/kernel/threads-max
29570

1.3 调整内核参数

管理员可以修改正在运行的系统上的大多数内核可调参数,以改变当前系统或应用程序的行为。这些参数直接在内存中修改,并将在下次重新启动时失效。要设置在重新启动时持久存在的参数值,需要在持久配置文件中创建设置。

系统性能调优学习笔记03_tuned

调整内核参数方式:

  • 使用编辑工具或重定向修改/proc/sys目录
  • 使用sysctl命令设置参数
  • 在/etc/sysctl.d/目录下为配置文件中的参数创建项

1.4 从命令行修改内核参数

root用户可以编辑可写的/proc/sys文件,对正在运行的内核立即生效。

通常使用echo命令将设置重定向为单值可调参数,但这种更改不会在重新引导期间持续存在,内核可调对象的虚线名称与/proc/sys.中的目录结构相匹配

布尔值示例:net.ipv4.icmp_echo_ignore_all包含布尔值,设置不同布尔值结果不同

net.ipv4.icmp_echo_ignore_all值

说明

0

允许ping(默认值)

1

忽略ping

# 检查/proc/sys/ net/ipv4/icmp_echo_ignore_all当前设置
[root@test01 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
# ping本机,可以ping通
[root@test01 ~]# ping -c1 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.175 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.175/0.175/0.175/0.000 ms
# 使用echo修改内核参数(忽略icmp请求)
[root@test01 ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# 由于存在ipv6解析,ping是通的
[root@test01 ~]# ping -c1 localhost
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.153 ms

--- localhost ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.153/0.153/0.153/0.000 ms
# ping ipv4地址,发现无法ping通
[root@test01 ~]# ping -c1 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

# 将内核参数修改回去
[root@test01 ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# 此时能够ping通
[root@test01 ~]# ping -c1 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.175 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.175/0.175/0.175/0.000 ms

多参数示例:net.ipv4.tcp_rmem包含多个值,调整内核参数也要包含多个值

# 查看内核默认参数
[root@test01 ~]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 6291456

# 通过echo修改内核参数
[root@test01 ~]# echo "8192 87380 6291456" > /proc/sys/net/ipv4/tcp_rmem
[root@test01 ~]# cat /proc/sys/net/ipv4/tcp_rmem
8192 87380 6291456

1.5 使用sysctl修改内核参数

sysctl命令直接按名称修改内核可调项。该命令可以编辑可调,列出可用的可调项,并从指定的配置文件中加载和应用设置。

sysctl参数

说明

-a

列出所有可调项

-n 内核参数

列出内核参数值

-w 内核参数

修改内核参数值

列出所有可调项

# 使用sysctl -a列出所有可调项
[root@test01 ~]# sysctl -a | head -n10
abi.vsyscall32 = 1
crypto.fips_enabled = 0
debug.exception-trace = 1
debug.kprobes-optimization = 1
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17
dev.cdrom.info =

列出内核参数值

[root@test01 ~]# sysctl -n net.ipv4.
Display all 532 possibilities? (y or n)
[root@test01 ~]# sysctl -n net.ipv4.icmp_echo_ignore_all
0
[root@test01 ~]# sysctl -n net.ipv4.tcp_rmem
8192 87380 6291456

修改内核参数值

# 修改之前的ping参数,发现成功调整,已经不能ping通了
[root@test01 ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=1
net.ipv4.icmp_echo_ignore_all = 1
[root@test01 ~]# ping 127.0.0.1 -c1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

# 查询net.ipv4.icmp_echo_ignore_all值
[root@test01 ~]# sysctl -n net.ipv4.icmp_echo_ignore_all
1

# 将net.ipv4.icmp_echo_ignore_all的值修改成0
[root@test01 ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=0
net.ipv4.icmp_echo_ignore_all = 0

# 发现又可以ping通了
[root@test01 ~]# ping 127.0.0.1 -c1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.227 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.227/0.227/0.227/0.000 ms

# =================================================
# 书上的一个例子,虚拟机交换内存值,值越大,越积极将内容写入交换分区。值越小,越不积极将内容写入交换分区
# 发现默认值是30
[root@test01 ~]# sysctl -n vm.swappiness
30
# 将vm.swappiness值调整为10
[root@test01 ~]# sysctl -w vm.swappiness=10
vm.swappiness = 10
[root@test01 ~]# sysctl -n vm.swappiness
10

1.6 持久化修改内核参数

1 修改配置文件

修改/proc/sys目录下参数或使用sysctl修改内核参数会在重启时失效,如果要持久化调整内核参数,可以将文件放置在以下几个目录中

  • /etc/sysctl.d/*.conf
  • /run/sysctl.d/*.conf
  • /usr/lib/sysctl.d/*.conf

通常建议将修改的信息放置在/etc/sysctl.d/*.conf下,因为/etc/sysctl.d/目录是可以确保系统启动时加载配置,并且不受软件升级或软件厂商设置而被覆盖的影响。

# 进入/etc/sysctl.d/目录,发现里面就一个注释文件
[root@test01 ~]# cd /etc/sysctl.d/
[root@test01 /etc/sysctl.d]# ls
99-sysctl.conf
[root@test01 /etc/sysctl.d]# cat 99-sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
[root@test01 /etc/sysctl.d]# echo "net.ipv4.icmp_echo_ignore_all.cnotallow=1" > ping.conf 
[root@test01 /etc/sysctl.d]# ls
99-sysctl.conf net.ipv4.icmp_echo_ignore_all.conf
[root@test01 /etc/sysctl.d]# cat ping.conf
net.ipv4.icmp_echo_ignore_all.conf=1
[root@test01 /etc/sysctl.d]# reboot

# 此时本机已经ping不通改设备了
mmx@mmxdeMacBook-Air ~ % ping 192.168.0.100
PING 192.168.0.100 (192.168.0.100): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- 192.168.0.100 ping statistics ---
11 packets transmitted, 0 packets received, 100.0% packet loss
# 但是ssh还是可以用
mmx@mmxdeMacBook-Air ~ % ssh root@192.168.0.100
root@192.168.0.100s password:
"System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8)."
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Wed Feb 15 19:54:21 2023 from 192.168.0.13
[root@test01 ~]# sysctl -n net.ipv4.icmp_echo_ignore_all
1
# 将内核参数修改回去
[root@test01 ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=0
net.ipv4.icmp_echo_ignore_all = 0
[root@test01 ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.231 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.061 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.066 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.061 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 312ms
rtt min/avg/max/mdev = 0.061/0.104/0.231/0.073 ms

2 使用sysctl -p加载配置

修改完后,可以不用重启电脑,使用sysctl -p加载配置文件可以直接生效

[root@test01 ~]# sysctl -n net.ipv4.icmp_echo_ignore_all 
0
[root@test01 ~]# sysctl -p /etc/sysctl.d/ping.conf
net.ipv4.icmp_echo_ignore_all = 1
[root@test01 ~]# sysctl -n net.ipv4.icmp_echo_ignore_all
1

2、sysfs文件系统

sysfs文件系统也是一个伪文件系统,挂载在/sys目录上,/sys下的文件提供了对作为内核模块加载的设备、文件系统和其他软件的信息和参数的访问。与/proc类似,/sys文件系统显示的文件具有它们所表示的结构的权限。有些是只读信息,有些是可写权限。sysfs树曾经是/proc的一部分,但为了增加内核的稳定性,它被移到了自己的文件系统中,因为设备驱动程序是由具有不同经验水平的广泛贡献者编写的。

/sys下常用子目录

说明

/sys/module

包含有关当前在单独的子目录下加载在内核中的内核模块的信息

/sys/devices

包含有关附加到系统的设备属性的信息

/sys/bus

包含内核中各种总线类型的信息

/sys/dev

包含有关系统上块和字符设备的信息。

2.1 配置模块参数

Linux内核是模块化的,允许仅在需要时自动加载设备驱动程序和组件,并在不再需要时卸载。许多内核模块都有可修改的设置,当模块加载时,所有内核模块设置被加载或设置为默认设置,通过sysfs暴露的参数可以在运行系统中修改。

大多数内核模块在内核文档包中包含说明文档,包括参数设置。使用它们 modinfo命令查询当前加载的模块。modinfo命令列出了模块信息,例如其文件名、许可证、描述和可配置参数。

2.2 查看模块名

使用modinfo查看模块,modinfo 模块名

[root@test01 ~]# modinfo loop
filename: /lib/modules/4.18.0-269.el8.x86_64/kernel/drivers/block/loop.ko.xz
alias: devname:loop-control
alias: char-major-10-237
alias: block-major-7-*
license: GPL
rhelversion: 8.4
srcversion: 4A8B2DD89B44DC743283247
depends:
intree: Y
name: loop
vermagic: 4.18.0-269.el8.x86_64 SMP mod_unload modversions
sig_id: PKCS#7
signer: CentOS kernel signing key
sig_key: 40:7E:C6:AE:74:A5:EC:07:82:F2:37:AA:CE:71:7B:DE:BA:BD:9A:6F
sig_hashalgo: sha256
signature: 53:35:85:7D:C5:F8:C6:C9:6D:3E:87:17:6E:AA:B9:64:65:ED:BF:BE:
5A:55:87:35:30:93:C5:8A:3D:C7:B1:A9:1D:AA:43:64:E1:58:E5:DF:
55:65:45:3D:63:5B:FD:96:CE:94:54:DF:AD:F6:1C:6F:E0:8A:B9:16:
49:F8:7B:6E:A0:92:B0:14:66:A2:0A:25:F2:DD:1E:FB:D7:C2:22:12:
60:4C:03:40:8C:D9:8D:3D:77:6E:7E:0E:09:BD:05:69:7A:79:C8:91:
C0:36:96:5C:6C:0A:A2:E6:D1:66:EB:1B:D6:BE:8B:9C:47:D6:2E:1D:
6E:8E:2D:00:88:34:90:69:54:AA:2E:79:08:38:72:53:67:8A:80:92:
30:D0:CB:56:28:BD:83:C0:71:48:2D:16:16:D9:53:47:31:CD:52:7C:
B2:B4:81:BA:FD:D2:C2:56:28:EC:9B:82:B4:3F:08:AA:DB:4E:B1:BC:
C9:DC:86:55:B2:4F:CC:9B:90:EA:1D:D7:DC:31:55:8C:29:47:03:C8:
DB:87:FC:44:B6:2C:8D:D8:49:18:59:8C:FE:A1:80:54:BB:4C:D0:04:
F2:EF:5F:6F:75:95:B5:0C:1F:71:CE:B6:C2:C9:B6:74:03:F3:51:F5:
50:DB:12:3F:E1:0E:33:C9:5D:8A:AC:9A:19:5A:59:99:19:71:F3:E5:
BB:DB:D7:07:96:AF:F2:88:53:7B:66:74:CD:EE:71:38:B0:DA:06:DC:
0A:6F:D6:A9:BA:F1:DD:D8:D4:AC:80:C0:FF:00:8D:3F:6E:50:26:23:
B6:82:8D:53:8C:8D:B5:B2:59:B6:6D:12:0B:6E:DA:CA:0D:0F:57:BF:
07:20:3A:41:F3:48:62:68:15:BA:73:80:AE:2D:18:D9:17:03:FC:69:
F1:EC:F5:79:84:9B:58:94:DC:91:A8:4E:B4:88:8B:60:18:4C:8A:37:
A0:A4:00:81:BE:8D:95:FB:BD:F7:FA:72:2C:AE:F7:FC:01:69:64:B2:
E9:88:0F:9E
parm: max_loop:Maximum number of loop devices (int)
parm: max_part:Maximum number of partitions per loop device (int)

2.3 列出模块可选参数

使用-p选项列出模块参数

[root@test01 ~]# modinfo -p loop
max_loop:Maximum number of loop devices (int)
max_part:Maximum number of partitions per loop device (int)

2.4 加载模块

[root@test01 /sys]# modprobe loop
[root@test01 /sys]# ls /sys/module/loop/
coresize holders initsize initstate notes parameters refcnt rhelversion sections srcversion taint uevent

2.5 查看模块参数

[root@test01 /sys]# cat /sys/module/loop/parameters/max_loop 
0

2.6 修改模块参数

临时方式:modprobe 模块名 可选参数=参数值

# 首先卸载模块
[root@test01 /sys]# modprobe -r loop
# 重新加载模块
[root@test01 /sys]# modprobe loop max_loop=5
[root@test01 /sys]# cat /sys/module/loop/parameters/max_loop
5

永久方式,将文件放在/etc/modprobe.d/*.conf目录中

[root@test01 /sys]# echo options loop max_loop=5  > /etc/modprobe.d/loop.conf 
[root@test01 /sys]# cat /etc/modprobe.d/loop.conf
options loop max_loop=5
# 重启系统
[root@test01 /etc/sysctl.d]# reboot
# 重新加载模块
[root@test01 ~]# modprobe loop
# 模块参数已经设置成5了
[root@test01 ~]# cat /sys/module/loop/parameters/max_loop
5

3、tuned调优服务

Red Hat Enterprise Linux提供名为tuned的调优服务,以帮助系统管理员优化不同类型工作负载用例的性能。tuned服务可以使用配置为满足特定工作负载要求的tuned配置文件,静态和动态地应用tuned调整。对于不同的tuned目标。

例如节能或网络吞吐量,存在许多预定义的tuned配置文件,tuned架构包括自定义配置文件规则以满足工作负载要求的能力。

3.1 静态调优

调优后的服务在服务启动期间或在配置文件之间切换时应用系统设置。静态调优包括设置一次性定义的sysctl和/sys参数。

使用静态调优:内核可调参数是针对总体性能预期设置的,不会随着活动级别的变化而进行调整。

3.2 动态调优

通过动态调优,调优后的服务监视系统活动并根据运行时行为更改调整设置。动态调优从所选调优概要文件的初始设置开始,不断调整以适应当前工作负载。动态调优试图平衡性能和省电,因此在高性能环境下禁用动态调优。

例如:考虑一个需要转码的视频文件。在代码转换作业期间,网络连接是不需要的,并且大多数情况下是不活动的。只有上传转码视频时才需要网络连接。网络接口不需要像默认情况下那样一直全速运行。通过动态调优,tuning可以使用调优的插件监视网络接口的低活动,并自动降低接口速度以减少电力使用。当接口活动增加一段时间后,例如转码视频开始上传时,调优的监控插件会检测并重置最大接口速度,以在较高的网络活动期间提高性能。

Red Hat Enterprise Linux 8默认禁用动态调优。在/etc/tuned/tuned-main.conf文件中将dynamic_tuning设置为1,启用动态调优。当启用动态调优时,tuning每10秒调整一次系统调优。在/etc/tuned/tuned -main.conf文件中设置update_interval,以秒为单位更改时间间隔,修改/etc/tuned/tuned-main.conf配置需要重新启动调优的服务。

# RHEL8默认禁用动态调优,要启动动态调优,将dynamic_tuning设置为1,并重启服务(每10秒调整一次系统)
[root@test01 ~]# cat /etc/tuned/tuned-main.conf | grep dynamic_tuning
dynamic_tuning = 0
[root@test01 ~]# cat /etc/tuned/tuned-main.conf | grep update_interval
update_interval = 10

3.3 安装和开启tuned

[root@test01 ~]# yum install -y tuned 
[root@test01 ~]# systemctl enable tuned --now
[root@test01 ~]# 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 Thu 2023-02-16 00:39:22 CST; 13s ago
Docs: man:tuned(8)
man:tuned.conf(5)
man:tuned-adm(8)
Main PID: 5191 (tuned)
Tasks: 6 (limit: 23656)
Memory: 19.6M
CGroup: /system.slice/tuned.service
└─5191 /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P

Feb 16 00:39:21 test01 systemd[1]: Starting Dynamic System Tuning Daemon...
Feb 16 00:39:22 test01 systemd[1]: Started Dynamic System Tuning Daemon.
[root@test01 ~]#

3.4 选择调优文件

概要文件是调优服务的核心,由为特定用例配置的可调设置组成。调优的概要文件可以通过复制和编辑现有概要文件来修改,也可以通过继承和扩展概要文件来修改。Red Hat建议不要修改任何预定义配置文件,因为有些配置文件是其他配置文件的父配置文件。调优后的包提供了以下类别的预定义配置文件:

  • 省电配置文件(power saving profiles)

省电配置文件通过增加磁盘回写值和禁用磁盘日志同步来支持积极的磁盘休眠。在服务器上,它为SATA主机适配器启用Aggressive Link Power Management (ALPM)节电,通过HAL禁用CD-ROM轮询,并激活调优的CPU和磁盘插件。

  • 性能提升配置文件(performance boosting profiles)

性能提升配置文件禁用节能机制,启用提高磁盘和网络I/O吞吐量性能的系统设置,并禁用透明大页和NUMA平衡。这些概要文件将CPU调控器设置为性能。

tuned 调优配置文件

说明

balanced

平衡(节能和性能之间作出妥协)

desktop

交互式应用程序快速响应

throughput-performance

吞吐量模式

latency-performance

延迟性能模式

network-latency

查看详情

系统性能调优学习笔记02

...片多处理器,或单个芯片封装中的多个芯片。每个服务器系统都有一个或多个cpu,每个cpu位于主板插座上。尽管拥有更多的cpu可以提供更强的处理能力,但软件的编写必须也是支持多线程的,这样软件能同时使用多个cpu,从而有... 查看详情

ioscoreanimation性能调优学习笔记(代码片段)

高效绘图一些关键词软件绘图上下文:指代软件绘图(意即:不由GPU协助的绘图)软件绘图通常是由CoreGraphics框架完成来完成绘制速度OpenGL>CoreAnimation>CoreGraphics消耗可观的内存CALayer只需要一些与自己相关的内... 查看详情

spark系统性学习笔记系列

1.SparkCoreSpark安装与启动Spark应用程序部署工具spark-submitSpark在Yarn上运行Spark应用程序2.SparkSQL3.SparkStreamingSparkStreaming第一个程序WordCount3.1Core3.2Connector3.3性能优化SparkStreaming2.2.0性能调优 查看详情

spark系统性学习笔记系列

1.SparkCoreSpark安装与启动Spark应用程序部署工具spark-submitSpark在Yarn上运行Spark应用程序2.SparkSQL3.SparkStreamingSparkStreaming第一个程序WordCount3.1Core3.2Connector3.3性能优化SparkStreaming2.2.0性能调优 查看详情

关于linux中系统调优的一些笔记(代码片段)

...触过,这里做为了解,长长见识。博文内容包括系统调优原理概述如何检测系统的性能瓶颈如何进行内核参数调优如何限制服务的资源占用自定义tuned调优配置集我突然又明白,死亡是聪明的兄长,我们可以放心... 查看详情

linux性能调优中内存调优工具的一些笔记整理(代码片段)

...文内容结合《Linux性能优化》读书笔记整理涉及内容包括系统内存相关理论实际的调优工具介绍理解不足小伙伴帮忙指正傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺... 查看详情

spark学习笔记6:spark调优与调试

 1、使用Sparkconf配置Spark  对Spark进行性能调优,通常就是修改Spark应用的运行时配置选项。  Spark中最主要的配置机制通过SparkConf类对Spark进行配置,当创建出一个SparkContext时,就需要创建出一个SparkConf实例。  Sparkconf实... 查看详情

关于linux性能调优中磁盘io调优的一些笔记(代码片段)

...Linux性能优化》读书笔记整理涉及内容包括使用vmstat统计系统内磁盘分区I/O属性的性能使用iostat分析磁盘分区的饱和度,利用率,读写速率。使用lsof确定哪些进程正在使用一组给定的文件,从而进行磁盘IO的进程食用... 查看详情

jvm学习笔记------内存调优

...。首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工... 查看详情

sparkstreaming2.2.0性能调优

传送门:Spark系统性学习笔记Spark版本:2.2.0SparkStreaming应用程序要获得最佳性能需要做一些调整优化。这篇文章我们介绍可以提高你应用程序性能的参数以及配置。从高层次来看,你需要关心两件事情:通过充分利用集群资源,减... 查看详情

sparkstreaming2.2.0性能调优

传送门:Spark系统性学习笔记Spark版本:2.2.0SparkStreaming应用程序要获得最佳性能需要做一些调整优化。这篇文章我们介绍可以提高你应用程序性能的参数以及配置。从高层次来看,你需要关心两件事情:通过充分利用集群资源,减... 查看详情

2021年底粉丝大馈赠,熬夜7天肝出这一份3000字性能测试学习笔记(代码片段)

...能分析思路性能场景设计性能监控设计全局监控设计操作系统常用计数器性能测试概念性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,... 查看详情

day775.如何制定性能调优标准-java性能调优实战(代码片段)

...调优标准的内容。一个朋友,有一次说,公司的系统从来没有经过性能调优,功能测试完成后就上线了,线上也没有出现过什么性能问题呀,那为什么很多系统都要去做性能调优 查看详情

rhca学习笔记:rh442-unit5队列原理

NIT5QueuingTheory 队列原理目标:1.明白性能调优的关键术语     2. 应用队列技术解决性能问题     3.明白性能调优的复杂性 5.1    Introductiontoqueuingtheory  查看详情

「性能优化」android性能优化学习(附360°性能调优学习指南)(代码片段)

性能优化指在不影响系统运行正确性的前提下,使之运行得更快,完成特定功能所需的时间更短,或拥有更强大的服务能力发挥机器本来的性能,所以我们要做的就是让机器性能发挥至最大。性能优化作为一个高... 查看详情

jvm性能调优笔记

-Xms5g-Xmx5g-XX:PermSize=256m-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:CMSFullGCsBeforeCompaction=1-server-XX:+DisableExplicitGC -verbose:gc-XX:+PrintGCDateStamps-XX:+PrintGCDetails参数说明:-XX:CMSF 查看详情

优化技术专题「系统性能调优实战」终极关注应用系统性能调手册指南(上册)

背景介绍本人是做呼叫中心服务的,但是最近需要将系统性能和吞吐提升更高的能力和层次,所以便进行先关系统性质的学习和优化相关的技术做了一定的研究。调优背景因为当出现吞吐远远不能够满足我们客户或者我们需要的... 查看详情