我在 Amazon Linux 上启用了强制模式的 SElinux,发现文件访问(读取/写入/更新)所需的时间平均增加了 2-4 秒。源进程是 Salt,文件访问与 Salt 的 file.managed 状态相关https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html#salt.states.file.managedaudit.log 文件中没有相应的拒绝。作为一种强力方法,我们尝试使用 audit2allow 在日志中添加所有拒绝的允许规则,但无法缩短访问文件所需的时间。
是否已知 SElinux 会导致文件系统访问性能下降?Linux 系统上是否存在已知会影响文件访问时间的进程?
答案1
SELinux 经常强制执行那些 IOPS 比你的系统更高的系统。此外,无论使用哪种存储系统或额外开销,IO 经常需要花费数秒的时间,这会导致无法容忍的性能低下。
正在发生其他事情。使用Linux 的丰富性能工具 来揭示它。一些开始的想法:
- 测量主机上所有性能资源的利用率。CPU、磁盘带宽、磁盘 IOPS、内存等。
- 得到火焰图当这个东西运行缓慢时,CPU 上有什么用处。
- 使用特定于编程语言的分析器对有问题的代码行进行分析。在本例中,salt 的文件功能可用。
- 获取块 IO 延迟分布,例如使用
biolatency
。 - 使用类似工具对此存储系统的原始 IO 进行基准测试
fio
,或者只是touch
(其中一些需要最新的内核才能实现 bpf 和其他功能。我不知道 Amazon Linux 的工具对所有这些功能的支持有多好。)