总体影响与量级 在 CentOS 上,SELinux 通过在内核进行强制访问控制检查带来额外开销,但现代内核与策略已高度优化。公开测试显示,在 Fedora 11(2009) 的对比中,开启 SELinux 仅在某些场景出现约 5% 的性能下降;实际生产环境中,常见范围通常也在个位数百分比,且对多数桌面与常规服务器负载影响有限。开销的主要来源是访问向量缓存(AVC)检查、策略匹配与文件/进程标签处理。
影响的主要来源
不同工作负载下的典型表现
| 场景 | 影响表现 | 说明 |
|---|---|---|
| 桌面与常规开发 | 通常不明显 | 现代默认策略已兼顾便利与安全,日常应用很少成为瓶颈。 |
| 文件/数据库密集型 | 可能出现个位数百分比下降 | 大量 open/read/write、元数据操作触发更多 AVC 检查与标签处理。 |
| 容器/虚拟化/镜像构建 | 可能更明显 | 镜像层与大量短生命周期进程导致标签与策略检查激增。 |
| 高并发网络服务 | 通常可控 | 主要受策略命中率与审计配置影响;命中率高时开销有限。 |
如何评估与降低开销
getenforce(返回 Enforcing/Permissive/Disabled),setenforce 0/1 在 Enforcing/Permissive 间临时切换;注意从 Disabled 切换到其他模式需重启并为文件系统重新打标签(touch /.autorelabel && reboot)。setenforce 0 后问题消失,极可能与 SELinux 策略相关。semanage、setsebool -P <name> off 关闭不必要的布尔值;对反复被拒绝的访问,用 ausearch -m avc 与 audit2allow 生成最小化的自定义策略,减少未来拒绝与检查次数。perf、flamegraph 等工具观察 avc_check_permission 等热点,确认是否为 SELinux 导致的 CPU 瓶颈。