我们使用测试性能的工具,unixbench,它有一下几项测试项目:

Execl Throughput                每秒钟执行 execl 系统调用的次数
Pipe Throughput 一秒钟内一个进程向一个管道写 字节数据然后再读回的次数
Pipe-based Context Switching 两个进程(每秒钟)通过一个管道交换一个不断增长的整数的次数
Process Creation 每秒钟一个进程可以创建子进程然后收回子进程的次数(子进程一定立即退出)
Shell Scripts ( concurrent) 一秒钟一个进程可以并发地开始一个 shell 脚本的 个拷贝的次数
Shell Scripts ( concurrent) 一秒钟内一个进程可以并发地开始一个 shell 脚本的 个拷贝的次数
System Call Overhead 进入和离开操作系统内核的代价

测试结果类似如下:

Benchmark Run: Wed Apr   :: - ::
CPUs in system; running parallel copy of tests Dhrystone using register variables 24249307.1 lps (10.0 s, samples)
Double-Precision Whetstone 2867.3 MWIPS (10.0 s, samples)
Execl Throughput 2447.9 lps (29.9 s, samples)
File Copy bufsize maxblocks 547726.0 KBps (30.0 s, samples)
File Copy bufsize maxblocks 149186.7 KBps (30.0 s, samples)
File Copy bufsize maxblocks 1297448.0 KBps (30.0 s, samples)
Pipe Throughput 946343.5 lps (10.0 s, samples)
Pipe-based Context Switching 186950.1 lps (10.0 s, samples)
Process Creation 7092.8 lps (30.0 s, samples)
Shell Scripts ( concurrent) 5631.6 lpm (60.0 s, samples)
Shell Scripts ( concurrent) 2726.4 lpm (60.0 s, samples)
System Call Overhead 905666.4 lps (10.0 s, samples)

测试了/boot/grub2/grub.cfg 中audit=0,和去除audit=0,以及开启auditd服务等的性能数据:

1、内核参数去掉audit=0,auditd服务默认不启动:这种情况性能没有太大变化;

2、服务开启,auditctl -D删除所有可配置规则:这种情况Pipe Throughput下降近20%,System Call Overhead下降35%,其他下降%2-10%左右;

3、删除所有规则,配置 -a never,task取消系统调用的审计:性能没有太大变化;

4、配置-a never,task,配置audit目录访问,提权,账户变更等基本规则:性能变化不大;

5、audit服务开启,配置pci-dss规则,没有取消系统调用审计:Pipe Throughput下降近30%,System Call Overhead下降近50%,Pipe-based Context Switching下降10%,其他下降%2-10%左右;

从性能结果可以看到,开启内核参数,这个对性能影响不大,但是开启auditd服务后对性能影响就比较明显。

这里需要注意的是,如果auditd服务开启后,再服务停止,auditctl –e 0,性能也没有上升,依然比较差,是因为在audit内核处理中,会判断是否曾经开启过即auditctl -s查询的enabled项,只要开启了,即使后面设置auditctl –e 0后,系统调用依然会走audit流程,这就会影响系统性能。具体代码在arch/x86/kernel/entry_64.S,copy_process()中 ,int audit_alloc函数。

另外,如果配置 -a never,task后,所有的审计 type类型为SYSCALL的都不会记录了,一般情况下是要对系统调用进行审计的。

linux audit审计(8)--开启audit对系统性能的影响的更多相关文章

  1. linux的审计功能(audit)

    为了满足这样的需求:记录文件变化.记录用户对文件的读写,甚至记录系统调用,文件变化通知.什么是auditThe Linux Audit Subsystem is a system to Collect ...

  2. linux audit审计(5)--audit规则配置

    audit可以配置规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志. 规则类型可分为: 1.控制规则:控制audit系统的规则: 2.文 ...

  3. linux audit审计(2)--audit启动

    参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec- ...

  4. linux audit审计(4)--audit的日志切分,以及与rsyslog的切分协同使用

    audit的规则配置稍微不当,就会短时间内产生大量日志,所以这个规则配置一定要当心.当audit日志写满后,可以看到如下场景: -r-------- 1 root root 8388609 Mar 3 ...

  5. ORACLE AUDIT 审计

    转自 http://blog.csdn.net/dnnyyq/article/details/4525980 1.什么是审计 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计 ...

  6. 【转】在使用实体框架(Entity Framework)的应用中加入审计信息(Audit trail)跟踪数据的变动

    在一些比较重要的业务系统中,通常会要求系统跟踪数据记录的变动情况.系统要记录什么时间,什么人,对那些信息进行了变动. 比较简单的实现方式是在每个表中加入两个字段CreatedBy和CreatedAt, ...

  7. 在使用实体框架(Entity Framework)的应用中加入审计信息(Audit trail)跟踪数据的变动

    在一些比较重要的业务系统中,通常会要求系统跟踪数据记录的变动情况.系统要记录什么时间,什么人,对那些信息进行了变动. 比较简单的实现方式是在每个表中加入两个字段CreatedBy和CreatedAt, ...

  8. MySQL5.7 (审计)安装audit审计插件

    转载自:https://blog.51cto.com/13941177/2173086 注意: 安装插件的方式优缺点: 缺点:日志信息比较大,对性能影响大. 优点:对每一时刻每一用户的操作都有记录. ...

  9. Linux History安全问题【保存记录防止删除】+完善Linux/UNIX审计 将每个shell命令记入日志

    2011-09-27 22:11:51|  分类: rhel5_033|举报|字号 订阅       Linux利用PROMPT_COMMAND实现审计功能 这个系统审计,记录什么用户,在什么时间,做 ...

  10. Linux防火墙(Iptables)的开启与关闭

    Linux防火墙(iptables)的开启与关闭 Linux中的防火墙主要是对iptables的设置和管理. 1. Linux防火墙(Iptables)重启系统生效 开启: chkconfig ipt ...

随机推荐

  1. Oracle调整顾问(SQL Tuning Advisor 与 SQL Access Advisor

    在Oracle数据库出现性能问题时,使用Oracle本身的工具包,给出合理的调优建议是比较省力的做法. tuning advisor 是对输入的sql set的执行计划进行优化accsee advis ...

  2. Python:Day55 ORM多表操作

    命令行创建UTF8数据库: CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 创建多表(外键)

  3. PHP 3 函数

    PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数. PHP 用户定义函数 除了内建的 PHP 函数,我们可以创建我们自己的函数. 函数是可以在程序中重复使用的语句块. 页面加载时函数 ...

  4. Android-App性能测试工具GT的使用方法

    参考链接: https://www.cnblogs.com/syw20170419/p/7228145.html?utm_source=itdadao&utm_medium=referral ...

  5. mac nginx 启动 自启动

    MacBook-Pro:local shihw$ brew services start nginx ==> Tapping homebrew/services Cloning into '/u ...

  6. AQS实现原理分析——ReentrantLock

    在Java并发包java.util.concurrent中可以看到,不少源码是基于AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是Java并发包的基础工具类, ...

  7. UIWindow 官方文档解析

    UIWindow定义了一个window对象,其用于管理和协调一个app在设备屏幕上的显示.除非一个app能在外部设备上显示内容,一般就只有一个window. window的主要功能:1)提供一个区域来 ...

  8. SpringBoot如何使用拦截器

    1.配置拦截器 @Configuration public class WebMvcConfigurer extends WebMvcConfigurerAdapter { @Override pub ...

  9. 简单的词法设计——DFA模拟程序

    实验一.简单的词法设计--DFA模拟程序 一.实验目的 通过实验教学,加深学生对所学的关于编译的理论知识的理解,增强学生对所学知识的综合应用能力,并通过实践达到对所学的知识进行验证.通过对 DFA 模 ...

  10. 小L的项链切割 (回文串)

    题目描述 小T送给了小L了一串项链.为了方便,我们把项链上形态不同钻石用不同的字母表示.这样小L的项链就变成了一个字符串.小L忽然想把这串项链优美地切割一下,她想把它切割成尽量少的回文项链,啊也就是回 ...