Linux核隔离配置
Linux核隔离介绍
Linux核隔离是一种操作系统级别的技术,用于将不同的进程或资源隔离开来,以提供更高的安全性和可靠性。它通过使用Linux内核的特性和机制,将不同的进程或资源限制在一个独立的环境中,使它们无法干扰或影响其他进程或资源。
核隔离可以应用于多个方面,包括进程隔离、文件系统隔离、网络隔离和内存隔离等。通过使用容器技术,如Docker和Kubernetes,可以更方便地实现这些隔离。
核隔离的好处包括:
- 安全性:通过将进程或资源隔离开来,可以防止恶意进程对其他进程或资源造成损害。
- 可靠性:由于进程或资源之间的隔离,一个进程或资源的故障不会影响其他进程或资源的正常运行。
- 性能优化:通过合理地分配资源,可以提高系统的性能和效率。
核隔离配置步骤
- 修改grub启动项。
vim /boot/efi/EFI/openEuler/grub.cfg
找到关键字“/vmlinuz”所在行,在行末尾添加以下内容:
irqaffinity=37,75,113,151,189,227,265,303,341,379,417,455,493,531,569,607 nohz_full=0-36,38-74,76-112,114-150,152-188,190-226,228-264,266-302,304-340,342-378,380-416,418-454,456-492,494-530,532-568,570-606 isolcpus=nohz,domain,managed_irq,0-36,38-74,76-112,114-150,152-188,190-226,228-264,266-302,304-340,342-378,380-416,418-454,456-492,494-530,532-568,570-606 rcu_nocbs=0-36,38-74,76-112,114-150,152-188,190-226,228-264,266-302,304-340,342-378,380-416,418-454,456-492,494-530,532-568,570-606 disable_sdei_nmi_watchdog enhanced_isolcpus
当前鲲鹏920专业版上每个节点共2个CPU,每个CPU 8个NUMA,每个NUMA 38核,整机共608核,核隔离参数考虑配置为每个NUMA的最后2个核为隔离核,隔离核的优先级为“irqaffinity”,使内核进程/中断优先调度到隔离核上,减少系统对计算核的影响。
同时,因配置隔离核后,若程序使用MPI顺序绑核会导致部分计算进程在隔离核上运行,影响程序整体性能。在该配置下,MPI可以指定rankfile,显式指定进程绑定的核。
- reboot重启节点,使核隔离参数生效。
- 重启后执行 cat /proc/cmdline,确认参数是否添加成功。
- 执行初始化脚本,将系统中断/服务绑定到隔离核,并配置性能配置。
#!/bin/bash # 禁用自动优化Linux系统硬件中断CPU分配的服务,强制绑定到隔离核 systemctl stop irqbalance && systemctl mask irqbalance #设置实时任务可以使用全部CPU时间 echo -1 > /proc/sys/kernel/sched_rt_runtime_us #设置khugepaged 后台线程在合并页面时的碎片整理行为为不整理碎片 echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag #设置进程分配内存时的即时行为为从不整理碎片 echo never > /sys/kernel/mm/transparent_hugepage/defrag #设置透明大页内存分配策略为系统全局开启 echo always > /sys/kernel/mm/transparent_hugepage/enabled #禁用自动NUMA平衡 echo 0 > /proc/sys/kernel/numa_balancing ps -aux | grep rcu_sched | grep -v 'grep' | awk '{print $2}' > ~/.tmp cat ~/.tmp | while read line; do taskset -pc 37,75,113,151,189,227,265,303,341,379,417,455,493,531,569,607 $line; done ps -aux | grep kswapd | grep -v 'grep' | awk '{print $2}' > ~/.tmp cat ~/.tmp | while read line; do taskset -pc 37,75,113,151,189,227,265,303,341,379,417,455,493,531,569,607 $line; done ps -aux | grep kcompactd | grep -v 'grep' | awk '{print $2}' > ~/.tmp cat ~/.tmp | while read line; do taskset -pc 37,75,113,151,189,227,265,303,341,379,417,455,493,531,569,607 $line; done ps -aux | grep rcuog | grep -v 'grep' | awk '{print $2}' > ~/.tmp cat ~/.tmp | while read line; do taskset -pc 37,75,113,151,189,227,265,303,341,379,417,455,493,531,569,607 $line; done ps -aux | grep rcuos | grep -v 'grep' | awk '{print $2}' > ~/.tmp cat ~/.tmp | while read line; do taskset -pc 37,75,113,151,189,227,265,303,341,379,417,455,493,531,569,607 $line; done # 配置所有核的模式为performance for core_id in 0-607 do echo performance > /sys/devices/system/cpu/cpufreq/policy${core_id}/scaling_governor done
父主题: Linux系统配置