欢迎各位兄弟 发布技术文章
这里的技术是共享的
PA: process address 进程的虚拟地址,叫线性内存地址
HA: host address 虚拟机的内存地址
MA: machine address 物理机的内存地址
虚拟化环境:
PA-->HA-->MA
虚拟机转换:虚拟机提供给每个进程的PA,转换的结果,到HA,(HA并不是真正的物理内存中的地址)(而cpu被转换以后要找的地址一定是MA的地址,所以不得不再转换一次,将HA转换成MA)(HA到MA之间还有一个内核即真正的宿主机内核,真正的宿主机必须要监控着从PA到HA的转换,一旦发现HA要执行特权指令了,)(虚拟机里面也有内核叫做GuestOS,来宾系统)(宿主机内核,叫做OS)(当OS监控到GuestOS需要执行特权指令的时候,其实虚拟机不是允许执行特权指令的,此时OS是会查觉到的,一旦发觉到这种情况,OS自己来负责转换了,,,但是无论如何GuestOS提供的PA只能转换成HA,所以OS自身还得负责帮忙将HA转换成MA)(假如从PA直接到MA,这速度会好很多,,,,但是很遗憾的是,如果你的硬件不能在这方面支持的话,它将无法完成直接转换,必须要二次转换以后才可以)(好在现在许多支持硬件虚拟化的CPU都能够提供影子页表 shadow PT)(shadow page table,阴子页表,,它能够在原有的MMU????的旁边再提供一个虚拟MMU,再提供一个假的缓存的MMU芯片,,,让GuestOS转换的时候到真的上面去,而我们的OS则负责自动在背后予以同步,就完成从HA到MA的转换了,,由此通知cpu一步一次性就能够完成从PA到MA的转换)(地址翻译或者叫虚拟内存VM,几乎就是我们x86系统上最难虚拟化的一个组件)(除了这种场景,我们只能完全进行模拟)
Memory,内存子系统中优化过程中最重要的一个内容就是提升tlb的性能,如何提升tlb的性能?通过大表页(Hugetable page),要使用 Hugetlbfs: huge table file system 大表文件系统),跟cpuset文件系统??????有点类似,它能够实现使用多种不同的页面大小(可以使用一部分正常页面,4k的)(还可以使用一部分大页面Hugetable page),,
如下图
这是在64位的红帽6上
[root@localhost ~]# cat /proc/meminfo | grep -i Huge
AnonHugePages: 0 kB # anonymous huge page 自动启动的匿名大页面,,我这边没值,马哥那边有值,,,马哥说这不是我们自己指定的
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB #大页面的大小2M,,不是4M了,因为我们是x86_64位的系统,,64位所支持的格式和类型比32位的系统多一些,,(32位的小页面,4k,大页面4M),而64位有变化,这里大页面大小是2M,,这里大页面HugePages_Total个数为0,HugePages_Free(空闲的)个数为0,HugePages_Rsvd(保留的)个数为0,,,,为0就是未启用吧
[root@localhost ~]#
下图,是马哥的
启用大页面
如下图 第一种方法# vim /etc/sysctl.conf vm.nr_hugepage = n (virtual memeory number huage page 为几个) 手动指定的话,使用# sysctl -w 来指定
第二种方法 操作系统启动的时候,向内核传递 hugepages = n ,表示启用几个大页面
[root@localhost ~]# sysctl -w vm.nr_hugepages=10 #手动指定几个大页面 ,临时有效,不会永久有效,要想永久有效,得写进 /etc/sysctl.conf 文件里
vm.nr_hugepages = 10
[root@localhost ~]#
[root@localhost ~]# cat /proc/meminfo | grep -i Huge
AnonHugePages: 0 kB
HugePages_Total: 10 #10个了
HugePages_Free: 10 #10个了
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
[root@localhost ~]#
创建大页面后,可以指定为某些应用程序所使用,甚至可以把大页面当作一个文件系统来使用(Hugetlbfs,可以挂载使用,,可以实现文件的复制修改删除等,,,,,,,,,,,,但是一关机会丢失,,,,,,在有时对临时文件操作时,放在这个内存空间里面可以实现),
像下面这样使用 明确使用
mkdir /hugepages #建目录
mount -t hugepages none /hugepages #它用的是内存空间 #类型 busetlbfs ,设备 none, 挂载点 /bugepases
如果不挂载,有些内存的功能(有些应用程序,比如mysql,共享内存的shm share memory),会自动使用大页面的
[root@localhost ~]# mkdir /hugepages
[root@localhost ~]# mount -t hugetlbfs none /hugepages/
[root@localhost ~]#
[root@localhost ~]# ls /hugepages/
[root@localhost ~]# dd if=/dev/zero of=/hugepages/a.test bs=1M count=5
dd: 正在写入"/hugepages/a.test": 无效的参数 #为啥报错 ,不允许直接使用,得让某个应用程序去使用
记录了1+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.0300102 秒,0.0 kB/秒
[root@localhost ~]#
[root@localhost ~]# ll /hugepages/
总用量 0
-rw-r--r--. 1 root root 0 7月 19 10:06 a.test #文件在这里,大小是0
[root@localhost ~]#
[root@localhost ~]# ll -h /hugepages/
总用量 0
-rw-r--r--. 1 root root 0 7月 19 10:06 a.test
[root@localhost ~]#
[root@localhost ~]# cp /etc/issue /hugepages/
cp: 正在写入"/hugepages/issue": 无效的参数 #为啥报错 , 不允许直接使用,得让某个应用程去使用
[root@localhost ~]# ls /hugepages/
a.test issue
[root@localhost ~]#
[root@localhost ~]# umount /hugepages/
[root@localhost ~]#
当使用大页面,或者说使用mysql服务器的场景当中,mysql的innodb有个参数innodb_buffer,这个空间是拿来让mysql的innodb存储引擎缓存数据索引,所以它通常所需要的空间特别的大,(有10G内存,给它6G都不过分),,,,,,,这6G内存拿过来反复的申请和使用,如果使用4k的小页面,效率太低了,此时,使用大页面,可以有效提高其性能的,,,,我们只需要指定有大页面就OK,不需要挂载,,,,但是我们要配置innodb能够使用大页面,,,,,这是如何提高tlb性能的??????
一个程序执行过程中,涉及到特权操作,得必须由内核来完成,而内核是通过提供系统调用的方式,让应用程序完成某种所申请的特定特权功能的,如何查看系统调用? strace 命令,
如下图
strace 命令观察进程是如何运行的,它执行的哪些系统调用?
strace -o /tmp/strace.out -p PID #追踪这个进程的系统调用以后,直接输出到 /tmp/strace.out 文件,,,,,,也可以 strace -p PID,它就能查看这个PID所执行的系统调用了,
[root@localhost ~]# ps auxf
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 09:25 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/0]
root 4 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/0]
root 6 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/0]
root 7 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/1]
root 8 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/1]
root 9 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/1]
root 10 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/1]
root 11 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/2]
root 12 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/2]
root 13 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/2]
root 14 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/2]
root 15 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/3]
root 16 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/3]
root 17 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/3]
root 18 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/3]
root 19 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/4]
root 20 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/4]
root 21 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/4]
root 22 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/4]
root 23 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/5]
root 24 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/5]
root 25 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/5]
root 26 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/5]
root 27 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/6]
root 28 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/6]
root 29 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/6]
root 30 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/6]
root 31 0.0 0.0 0 0 ? S 09:25 0:00 \_ [migration/7]
root 32 0.0 0.0 0 0 ? S 09:25 0:00 \_ [stopper/7]
root 33 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksoftirqd/7]
root 34 0.0 0.0 0 0 ? S 09:25 0:00 \_ [watchdog/7]
root 35 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/0]
root 36 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/1]
root 37 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/2]
root 38 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/3]
root 39 0.0 0.0 0 0 ? S 09:25 0:01 \_ [events/4]
root 40 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/5]
root 41 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/6]
root 42 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/7]
root 43 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/0]
root 44 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/1]
root 45 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/2]
root 46 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/3]
root 47 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/4]
root 48 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/5]
root 49 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/6]
root 50 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events/7]
root 51 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/0]
root 52 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/1]
root 53 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/2]
root 54 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/3]
root 55 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/4]
root 56 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/5]
root 57 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/6]
root 58 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_long/7]
root 59 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 60 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 61 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 62 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 63 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 64 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 65 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 66 0.0 0.0 0 0 ? S 09:25 0:00 \_ [events_power_ef]
root 67 0.0 0.0 0 0 ? S 09:25 0:00 \_ [cgroup]
root 68 0.0 0.0 0 0 ? S 09:25 0:00 \_ [khelper]
root 69 0.0 0.0 0 0 ? S 09:25 0:00 \_ [netns]
root 70 0.0 0.0 0 0 ? S 09:25 0:00 \_ [async/mgr]
root 71 0.0 0.0 0 0 ? S 09:25 0:00 \_ [pm]
root 72 0.0 0.0 0 0 ? S 09:25 0:00 \_ [sync_supers]
root 73 0.0 0.0 0 0 ? S 09:25 0:00 \_ [bdi-default]
root 74 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/0]
root 75 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/1]
root 76 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/2]
root 77 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/3]
root 78 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/4]
root 79 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/5]
root 80 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/6]
root 81 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kintegrityd/7]
root 82 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/0]
root 83 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/1]
root 84 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/2]
root 85 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/3]
root 86 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/4]
root 87 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/5]
root 88 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/6]
root 89 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kblockd/7]
root 90 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kacpid]
root 91 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kacpi_notify]
root 92 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kacpi_hotplug]
root 93 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_aux]
root 94 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/0]
root 95 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/1]
root 96 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/2]
root 97 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/3]
root 98 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/4]
root 99 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/5]
root 100 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/6]
root 101 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ata_sff/7]
root 102 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ksuspend_usbd]
root 103 0.0 0.0 0 0 ? S 09:25 0:00 \_ [khubd]
root 104 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kseriod]
root 105 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/0]
root 106 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/1]
root 107 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/2]
root 108 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/3]
root 109 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/4]
root 110 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/5]
root 111 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/6]
root 112 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md/7]
root 113 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/0]
root 114 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/1]
root 115 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/2]
root 116 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/3]
root 117 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/4]
root 118 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/5]
root 119 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/6]
root 120 0.0 0.0 0 0 ? S 09:25 0:00 \_ [md_misc/7]
root 121 0.0 0.0 0 0 ? S 09:25 0:00 \_ [linkwatch]
root 124 0.0 0.0 0 0 ? S 09:25 0:00 \_ [khungtaskd]
root 125 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/0]
root 126 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/1]
root 127 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/2]
root 128 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/3]
root 129 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/4]
root 130 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/5]
root 131 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/6]
root 132 0.0 0.0 0 0 ? S 09:25 0:00 \_ [lru-add-drain/7]
root 133 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kswapd0]
root 134 0.0 0.0 0 0 ? SN 09:25 0:00 \_ [ksmd]
root 135 0.0 0.0 0 0 ? SN 09:25 0:00 \_ [khugepaged]
root 136 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/0]
root 137 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/1]
root 138 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/2]
root 139 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/3]
root 140 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/4]
root 141 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/5]
root 142 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/6]
root 143 0.0 0.0 0 0 ? S 09:25 0:00 \_ [aio/7]
root 144 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/0]
root 145 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/1]
root 146 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/2]
root 147 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/3]
root 148 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/4]
root 149 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/5]
root 150 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/6]
root 151 0.0 0.0 0 0 ? S 09:25 0:00 \_ [crypto/7]
root 158 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/0]
root 159 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/1]
root 160 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/2]
root 161 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/3]
root 162 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/4]
root 163 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/5]
root 164 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/6]
root 165 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kthrotld/7]
root 166 0.0 0.0 0 0 ? S 09:25 0:00 \_ [pciehpd]
root 168 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kpsmoused]
root 169 0.0 0.0 0 0 ? S 09:25 0:00 \_ [usbhid_resumer]
root 170 0.0 0.0 0 0 ? S 09:25 0:00 \_ [deferwq]
root 203 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kdmremove]
root 204 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kstriped]
root 236 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ttm_swap]
root 412 0.0 0.0 0 0 ? S 09:25 0:00 \_ [scsi_eh_0]
root 413 0.0 0.0 0 0 ? S 09:25 0:00 \_ [scsi_eh_1]
root 486 0.0 0.0 0 0 ? S 09:25 0:00 \_ [mpt_poll_0]
root 487 0.0 0.0 0 0 ? S 09:25 0:00 \_ [mpt/0]
root 488 0.0 0.0 0 0 ? S 09:25 0:00 \_ [scsi_eh_2]
root 569 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kdmflush]
root 571 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kdmflush]
root 637 0.0 0.0 0 0 ? S 09:25 0:00 \_ [jbd2/dm-0-8]
root 638 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ext4-dio-unwrit]
root 676 0.0 0.0 0 0 ? S 09:25 0:00 \_ [flush-253:0]
root 934 0.0 0.0 0 0 ? S 09:25 0:00 \_ [vmmemctl]
root 1194 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kdmflush]
root 1233 0.0 0.0 0 0 ? S 09:25 0:00 \_ [jbd2/sda1-8]
root 1234 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ext4-dio-unwrit]
root 1235 0.0 0.0 0 0 ? S 09:25 0:00 \_ [jbd2/dm-2-8]
root 1236 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ext4-dio-unwrit]
root 1333 0.0 0.0 0 0 ? S 09:25 0:00 \_ [kauditd]
root 1392 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_addr]
root 1397 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/0]
root 1398 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/1]
root 1399 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/2]
root 1400 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/3]
root 1401 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/4]
root 1402 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/5]
root 1403 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/6]
root 1404 0.0 0.0 0 0 ? S 09:25 0:00 \_ [infiniband/7]
root 1413 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_mcast]
root 1418 0.0 0.0 0 0 ? S 09:25 0:00 \_ [iw_cm_wq]
root 1423 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/0]
root 1424 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/1]
root 1425 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/2]
root 1426 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/3]
root 1427 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/4]
root 1428 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/5]
root 1429 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/6]
root 1430 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ib_cm/7]
root 1436 0.0 0.0 0 0 ? S 09:25 0:00 \_ [rdma_cm]
root 1457 0.0 0.0 0 0 ? S 09:25 0:00 \_ [ipoib_flush]
root 1 0.1 0.0 19364 1564 ? Ss 09:25 0:05 /sbin/init
root 746 0.0 0.0 11404 1540 ? S<s 09:25 0:00 /sbin/udevd -d
root 2370 0.0 0.1 12324 2644 ? S< 09:25 0:00 \_ /sbin/udevd -d
root 2371 0.0 0.1 12324 2648 ? S< 09:25 0:00 \_ /sbin/udevd -d
root 1692 0.0 0.0 29764 872 ? S<sl 09:25 0:00 auditd
root 1726 0.0 0.0 249088 1660 ? Sl 09:25 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root 1760 0.0 0.0 18388 792 ? Ss 09:25 0:00 irqbalance --pid=/var/run/irqbalance.pid
rpc 1778 0.0 0.0 18980 884 ? Ss 09:25 0:00 rpcbind
rpcuser 1800 0.0 0.0 23352 1376 ? Ss 09:25 0:00 rpc.statd
dbus 1835 0.0 0.0 31812 1200 ? Ssl 09:25 0:00 dbus-daemon --system
root 1857 0.0 0.1 189136 3400 ? Ss 09:25 0:00 cupsd -C /etc/cups/cupsd.conf
root 1889 0.0 0.0 4076 660 ? Ss 09:25 0:00 /usr/sbin/acpid
68 1901 0.0 0.2 38360 4620 ? Ssl 09:25 0:00 hald
root 1902 0.0 0.0 20396 1176 ? S 09:25 0:00 \_ hald-runner
root 1934 0.0 0.0 22516 1108 ? S 09:25 0:00 \_ hald-addon-input: Listening on /dev/
68 1947 0.0 0.0 18004 1052 ? S 09:25 0:00 \_ hald-addon-acpi: listening on acpid
root 1971 0.0 0.1 386160 1944 ? Ssl 09:25 0:00 automount --pid-file /var/run/autofs.pid
root 2113 0.0 0.0 6264 292 ? Ss 09:25 0:00 /usr/sbin/mcelog --daemon
root 2130 0.0 0.0 66288 1256 ? Ss 09:25 0:00 /usr/sbin/sshd
root 2375 0.0 0.2 102136 4484 ? Ss 09:28 0:00 \_ sshd: root@pts/0
root 2379 0.0 0.0 108352 1816 pts/0 Ss 09:29 0:00 \_ -bash
root 2673 0.0 0.0 110508 1356 pts/0 R+ 10:46 0:00 \_ ps auxf
root 2209 0.0 0.1 81012 3464 ? Ss 09:25 0:00 /usr/libexec/postfix/master
postfix 2215 0.0 0.1 81092 3444 ? S 09:25 0:00 \_ pickup -l -t fifo -u
postfix 2216 0.0 0.1 81260 3488 ? S 09:25 0:00 \_ qmgr -l -t fifo -u
root 2223 0.0 0.1 183088 2548 ? Ss 09:25 0:00 /usr/sbin/abrtd
root 2250 0.0 0.0 116872 1396 ? Ss 09:25 0:00 crond
root 2265 0.0 0.0 21104 496 ? Ss 09:25 0:00 /usr/sbin/atd
root 2282 0.0 0.0 108352 672 ? Ss 09:25 0:00 /usr/bin/rhsmcertd
root 2299 0.0 0.0 64476 1432 ? Ss 09:25 0:00 /usr/sbin/certmonger -S -p /var/run/certmong
root 2350 0.0 0.0 4060 544 tty1 Ss+ 09:25 0:00 /sbin/mingetty /dev/tty1
root 2354 0.0 0.0 4060 548 tty2 Ss+ 09:25 0:00 /sbin/mingetty /dev/tty2
root 2356 0.0 0.0 4060 544 tty3 Ss+ 09:25 0:00 /sbin/mingetty /dev/tty3
root 2358 0.0 0.0 4060 544 tty4 Ss+ 09:25 0:00 /sbin/mingetty /dev/tty4
root 2360 0.0 0.0 4060 548 tty5 Ss+ 09:25 0:00 /sbin/mingetty /dev/tty5
root 2362 0.0 0.0 4060 544 tty6 Ss+ 09:25 0:00 /sbin/mingetty /dev/tty6
root 2513 0.0 0.0 16948 676 ? Ss 10:01 0:00 /usr/sbin/anacron -s
root 2663 0.5 0.4 232964 8288 ? Ss 10:46 0:00 /usr/sbin/httpd
apache 2665 0.0 0.2 232964 4844 ? S 10:46 0:00 \_ /usr/sbin/httpd #看看它
apache 2666 0.0 0.2 232964 4828 ? S 10:46 0:00 \_ /usr/sbin/httpd
apache 2667 0.0 0.2 232964 4828 ? S 10:46 0:00 \_ /usr/sbin/httpd
apache 2668 0.0 0.2 232964 4828 ? S 10:46 0:00 \_ /usr/sbin/httpd
apache 2669 0.0 0.2 232964 4828 ? S 10:46 0:00 \_ /usr/sbin/httpd
apache 2670 0.0 0.2 232964 4828 ? S 10:46 0:00 \_ /usr/sbin/httpd
apache 2671 0.0 0.2 232964 4828 ? S 10:46 0:00 \_ /usr/sbin/httpd
apache 2672 0.0 0.2 232964 4828 ? S 10:46 0:00 \_ /usr/sbin/httpd
[root@localhost ~]# strace -p 2665
Process 2665 attached
accept(4, #当前进程没有接收任何请求,当接收请求后很有可能产生系统调用,?如果用户请求了一个页面文件,意味着当前系统要打开这个页面文件,要跟硬件打交道,所以要实现系统调用的
下面是马哥显示的,不一样嘛
另开一个putty窗口
[root@localhost ~]# cp /etc/fstab /var/www/html/index.html
[root@localhost ~]#
[root@localhost ~]# ab -n 300 -c 10 http://192.168.0.64/index.html #压力测试请求
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.0.64 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Finished 300 requests
Server Software: Apache/2.2.15
Server Hostname: 192.168.0.64
Server Port: 80
Document Path: /index.html
Document Length: 900 bytes
Concurrency Level: 10
Time taken for tests: 0.053 seconds
Complete requests: 300
Failed requests: 0
Write errors: 0
Total transferred: 355984 bytes
HTML transferred: 273600 bytes
Requests per second: 5677.41 [#/sec] (mean)
Time per request: 1.761 [ms] (mean)
Time per request: 0.176 [ms] (mean, across all concurrent requests)
Transfer rate: 6578.99 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.4 1 3
Processing: 1 1 0.3 1 3
Waiting: 0 1 0.3 1 3
Total: 1 2 0.5 1 5
WARNING: The median and mean for the total time are not within a normal deviation
These results are probably not that reliable.
Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 2
80% 2
90% 2
95% 2
98% 4
99% 4
100% 5 (longest request)
[root@localhost ~]#
原putty窗口
[root@localhost ~]# strace -p 2726
Process 2726 attached
accept(4, {sa_family=AF_INET6, sin6_port=htons(60538), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60574), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60604), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60636), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60662), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60686), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60714), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60740), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60764), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60792), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60830), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60856), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60880), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60908), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60934), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60954), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(60984), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(32778), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(32806), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(32832), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(32856), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4, {sa_family=AF_INET6, sin6_port=htons(32882), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 10
fcntl(10, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
getsockname(10, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::ffff:192.168.0.64", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(10, "GET /index.html HTTP/1.0\r\nHost: "..., 8000) = 90
stat("/var/www/html/index.html", {st_mode=S_IFREG|0644, st_size=900, ...}) = 0
open("/var/www/html/index.html", O_RDONLY|O_CLOEXEC) = 11
fcntl(11, F_GETFD) = 0x1 (flags FD_CLOEXEC)
fcntl(11, F_SETFD, FD_CLOEXEC) = 0
setsockopt(10, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(10, [{"HTTP/1.1 200 OK\r\nDate: Mon, 19 J"..., 271}], 1) = 271
sendfile(10, 11, [0], 900) = 900
setsockopt(10, SOL_TCP, TCP_CORK, [0], 4) = 0
write(7, "192.168.0.64 - - [19/Jul/2021:11"..., 103) = 103
shutdown(10, SHUT_WR) = 0
poll([{fd=10, events=POLLIN}], 1, 2000) = 1 ([{fd=10, revents=POLLIN|POLLHUP}])
read(10, "", 512) = 0
close(10) = 0
read(5, 0x7ffe9145da4f, 1) = -1 EAGAIN (Resource temporarily unavailable)
close(11) = 0
accept(4,
马哥那边不能追踪这个httpd 进程
[root@localhost ~]# strace cat /etc/fstab # strace 命令,,,,,也可以追踪某一个命令
execve("/bin/cat", ["cat", "/etc/fstab"], [/* 27 vars */]) = 0 #执行命令 /bin/cat
brk(0) = 0x120e000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01c5e56000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) #访问 /etc/ld.so.preload
open("/etc/ld.so.cache", O_RDONLY) = 3 #打开/etc/ld.so.cache,,,,,,查找库的缓存分析结果
fstat(3, {st_mode=S_IFREG|0644, st_size=45745, ...}) = 0
mmap(NULL, 45745, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f01c5e4a000
close(3) = 0
open("/lib64/libc.so.6", O_RDONLY) = 3 #打开库/lib64/libc.so.6
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\356A{:\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1930416, ...}) = 0
mmap(0x3a7b400000, 3750184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3a7b400000
mprotect(0x3a7b58a000, 2097152, PROT_NONE) = 0
mmap(0x3a7b78a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x3a7b78a000
mmap(0x3a7b790000, 14632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3a7b790000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01c5e49000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01c5e48000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01c5e47000
arch_prctl(ARCH_SET_FS, 0x7f01c5e48700) = 0
mprotect(0x3a7b78a000, 16384, PROT_READ) = 0
mprotect(0x3a7ae20000, 4096, PROT_READ) = 0
munmap(0x7f01c5e4a000, 45745) = 0
brk(0) = 0x120e000
brk(0x122f000) = 0x122f000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99170352, ...}) = 0 #但凡使用一个命令,后面加个括号,都是系统调用
mmap(NULL, 99170352, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f01bffb3000
close(3) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
open("/etc/fstab", O_RDONLY) = 3 # 系统调用 , 只读方式打开 /etc/fstab
fstat(3, {st_mode=S_IFREG|0644, st_size=900, ...}) = 0 # 查看文件的权限信息,又是系统调用
read(3, "\n#\n# /etc/fstab\n# Created by ana"..., 32768) = 900 # 读取文件的内容
write(1, "\n#\n# /etc/fstab\n# Created by ana"..., 900 #写文件内容,往屏幕上写,因为屏幕设备也是一个文件,,,当前的tty ,,,,,,/dev/pts/0,,,,,所以write就是write到这个设备,即写到屏幕上来
#
# /etc/fstab
# Created by anaconda on Wed Jul 14 21:11:42 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=02ded709-9bb2-40dd-b5ba-b274ae0bd2f0 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_home /home ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
cpuset /cpusets cpuset defaults 0 0
) = 900
read(3, "", 32768) = 0
close(3) = 0
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
[root@localhost ~]#
[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]#
[root@localhost ~]# strace -c cat /etc/fstab # -c ( summary )选项可以追踪整个结果的,,,,可以将概括信息给我们显示出来,告诉你,你一共执行了多少系统调用
#
# /etc/fstab
# Created by anaconda on Wed Jul 14 21:11:42 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=02ded709-9bb2-40dd-b5ba-b274ae0bd2f0 /boot ext4 defaul ts 1 2
/dev/mapper/VolGroup-lv_home /home ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
cpuset /cpusets cpuset defaults 0 0
% time seconds usecs/call calls errors syscall
(花的时间百分比)(花的时间)( 表示每个系统调用平均耗时(微秒)???? )(一共几个调用)(有几次错误的调用)
( usecs/call * calls = seconds 吧 )
------ ----------- ----------- --------- --------- ----------------
0.00 0.000000 0 3 read # read 执行了几次
0.00 0.000000 0 1 write
0.00 0.000000 0 4 open # open 执行了几次
0.00 0.000000 0 6 close
0.00 0.000000 0 5 fstat
0.00 0.000000 0 9 mmap # mmap 执行了几次
0.00 0.000000 0 3 mprotect
0.00 0.000000 0 1 munmap
0.00 0.000000 0 3 brk
0.00 0.000000 0 1 1 access
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.000000 38 1 total
[root@localhost ~]#
strace 可以追踪正在执行的命令的系统调用,也可以追踪已经打开的进程的系统调用,,,,只不过要想监控某一个打开的进程( # strace -p PID )
strace:
strace CONWAND: 查看命令的syscall
strace -p PID: 查看已经启动进程的syscall
-c: 只输出其概括信息
-o FILE: 将追踪结果保存至文件中,以供后续分析使用
我们通过strace的分析结果,尤其是-c (summary) 信息,可以判定一下, 我们的某一个服务,执行过程中,大量的时间消耗在哪里了,,,,比如LAMP中, php 以module化的方式 被嵌入到httpd进程,假如我们发现httpd服务响应速度比较慢,此时我们可以追踪一下某个httpd进程,看看它消耗的时间,产生的系统调用主要有哪些,哪个系统调用消耗的时间最长,就能够简单的分析出慢的主要原因了
strace 偶尔用来实现探测锁竞争,而且也能够实现定位I/O问题的,???比如看open,write,read各个时间长
如何使用memory,我们要想实现对内存子系统使用上的优化,要注意这样几个主体思想:
如下图
1)尽可能降低微小内存对象的开销 (slab allocate所分配出去存储各种元数据的什么的都是小内存对像,或小内存数据结构),,,这些数据结构可能会被频繁的创建或撤消,因此为了避免这一点,就要使用slab,
slab在实现内存分配的使用策略上,
如下图
slab在实现内存分配的时候,先申请几个内存页,而后将这些内存页按规格为每一种对象事先划分好各种slab页面,在每个页面上,有一堆的object,,,,,,,,,,要从全面上来讲,一般说来,我们的slab cache (slab 缓存)(slab所使用的这段memory),这些memory是预先分配的,不管你用不用,都预先将某些特定内存分配给slab使用,,,,而后slab将每一个缓存,( kmem_cache 即 kernel memory cache ,,,,,,,,大概这里面包含好多页),,,,,,分成三类,第一类叫slabs_empty(空闲的未使用的slab),,,,,,,第二类叫slabs_full(已经占满了的,已经被全部使用了的slab页面, ),,,,,,第二类叫slab_partial(只是部分使用了的slab缓存),,,,,,,,,,,,,,,,对于slab,我们应该使用完一个,再使用另外一个,所以slab_partial被直接使用????从head到tail,有很多slab缓存空间可以用,至上而下的排,有slab的page,而后page里面可以存储object,
如下图
假如,这是slab 缓存,里面包含了很多内存页面,页面分为三类,,,,,,,,,,页面里面再次划分小对象,存满了小对象(数据)的页面我们称为slab_full,,,,,,,, 使用了一部分(未存满的)称为slab_partial,,,,,,,,,,已经分配好了,但尚未启用的,叫slab_empty,,,,,,,,slab_empty里面有好多个页面,slab_full里面有好多个页面,slab_partial里面有好多个页面,,,为什么是好多个,而不是一个,(slab_partial里面 可能有n个页面,第一个页面存的是10bytes,第一个没存满,,第二个页面存的是15bytes,第二个没存满,,,所以说有好多个)
[root@localhost ~]# cat /proc/slabinfo # slab能存储各种不同类型的结构(或者说内存对象),每一种内存对象,它的结构是不一样的,,,,,我们预先分配,分配给每一种对象的大小是不一样的,,,,因此为每一种对象,它有可能都要事先准备多个空闲空间的,,,,,所以就算叫partial,或者叫空闲,或者叫full,事实上已经都事先分配好了,空间都已经都划分好了,,,,所以已经存满的,可能有多个页面,,,,,,,,正在使用的,也可能有多个页面,,,,,,,,,,,,因为在每一个页面当中,它所能够划分的对象类型也不一定是包含这里全部的内容???????
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_expect 0 0 240 16 1 : tunables 120 60 8 : slabdata 0 0 0
nf_conntrack_ffffffff81b2d1a0 0 0 312 12 1 : tunables 54 27 8 : slabdata 0 0 0
ib_mad 0 0 512 7 1 : tunables 54 27 8 : slabdata 0 0 0
fib6_nodes 22 118 64 59 1 : tunables 120 60 8 : slabdata 2 2 0
ip6_dst_cache 13 50 384 10 1 : tunables 54 27 8 : slabdata 5 5 0
ndisc_cache 5 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 0
ip6_mrt_cache 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
RAWv6 35 35 1088 7 2 : tunables 24 12 8 : slabdata 5 5 0
UDPLITEv6 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
UDPv6 4 12 1024 4 1 : tunables 54 27 8 : slabdata 3 3 0
tw_sock_TCPv6 0 0 320 12 1 : tunables 54 27 8 : slabdata 0 0 0
request_sock_TCPv6 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
TCPv6 6 6 1984 2 1 : tunables 24 12 8 : slabdata 3 3 0
jbd2_1k 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
avtab_node 640732 640800 24 144 1 : tunables 120 60 8 : slabdata 4450 4450 0
ext4_inode_cache 16088 16100 1000 4 1 : tunables 54 27 8 : slabdata 4025 4025 0
ext4_xattr 3 44 88 44 1 : tunables 120 60 8 : slabdata 1 1 0
ext4_free_block_extents 0 0 56 67 1 : tunables 120 60 8 : slabdata 0 0 0
ext4_alloc_context 0 0 136 28 1 : tunables 120 60 8 : slabdata 0 0 0
ext4_prealloc_space 8 37 104 37 1 : tunables 120 60 8 : slabdata 1 1 0
ext4_system_zone 0 0 40 92 1 : tunables 120 60 8 : slabdata 0 0 0
jbd2_journal_handle 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
jbd2_journal_head 3 68 112 34 1 : tunables 120 60 8 : slabdata 2 2 0
jbd2_revoke_table 6 202 16 202 1 : tunables 120 60 8 : slabdata 1 1 0
jbd2_revoke_record 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
sd_ext_cdb 2 112 32 112 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_sense_cache 3 30 128 30 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_cmd_cache 3 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 0
dm_raid1_read_record 0 0 1064 7 2 : tunables 24 12 8 : slabdata 0 0 0
kcopyd_job 0 0 3240 2 2 : tunables 24 12 8 : slabdata 0 0 0
io 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
dm_uevent 0 0 2608 3 2 : tunables 24 12 8 : slabdata 0 0 0
dm_rq_clone_bio_info 0 0 16 202 1 : tunables 120 60 8 : slabdata 0 0 0
dm_rq_target_io 0 0 424 9 1 : tunables 54 27 8 : slabdata 0 0 0
dm_target_io 48 576 24 144 1 : tunables 120 60 8 : slabdata 4 4 0
dm_io 48 201 56 67 1 : tunables 120 60 8 : slabdata 3 3 0
flow_cache 0 0 104 37 1 : tunables 120 60 8 : slabdata 0 0 0
uhci_urb_priv 1 67 56 67 1 : tunables 120 60 8 : slabdata 1 1 0
cfq_io_context 31 112 136 28 1 : tunables 120 60 8 : slabdata 4 4 0
cfq_queue 32 112 240 16 1 : tunables 120 60 8 : slabdata 7 7 0
bsg_cmd 0 0 312 12 1 : tunables 54 27 8 : slabdata 0 0 0
mqueue_inode_cache 1 4 896 4 1 : tunables 54 27 8 : slabdata 1 1 0
isofs_inode_cache 0 0 640 6 1 : tunables 54 27 8 : slabdata 0 0 0
hugetlbfs_inode_cache 1 6 608 6 1 : tunables 54 27 8 : slabdata 1 1 0
dquot 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
kioctx 0 0 384 10 1 : tunables 54 27 8 : slabdata 0 0 0
kiocb 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
inotify_event_private_data 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
inotify_inode_mark_entry 112 128 120 32 1 : tunables 120 60 8 : slabdata 4 4 0
dnotify_mark_entry 0 0 120 32 1 : tunables 120 60 8 : slabdata 0 0 0
dnotify_struct 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
dio 0 0 640 6 1 : tunables 54 27 8 : slabdata 0 0 0
fasync_cache 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
khugepaged_mm_slot 0 0 40 92 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_mm_slot 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_stable_node 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_rmap_item 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
utrace_engine 0 0 56 67 1 : tunables 120 60 8 : slabdata 0 0 0
utrace 1 59 64 59 1 : tunables 120 60 8 : slabdata 1 1 0
pid_namespace 0 0 2168 3 2 : tunables 24 12 8 : slabdata 0 0 0
posix_timers_cache 0 0 176 22 1 : tunables 120 60 8 : slabdata 0 0 0
uid_cache 6 60 128 30 1 : tunables 120 60 8 : slabdata 2 2 0
UNIX 110 144 896 4 1 : tunables 54 27 8 : slabdata 36 36 0
ip_mrt_cache 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
UDP-Lite 0 0 896 4 1 : tunables 54 27 8 : slabdata 0 0 0
tcp_bind_bucket 7 59 64 59 1 : tunables 120 60 8 : slabdata 1 1 0
inet_peer_cache 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
secpath_cache 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
xfrm_dst_cache 0 0 448 8 1 : tunables 54 27 8 : slabdata 0 0 0
ip_fib_alias 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
ip_fib_hash 10 53 72 53 1 : tunables 120 60 8 : slabdata 1 1 0
ip_dst_cache 8 10 384 10 1 : tunables 54 27 8 : slabdata 1 1 0
arp_cache 4 15 256 15 1 : tunables 120 60 8 : slabdata 1 1 0
PING 0 0 832 9 2 : tunables 54 27 8 : slabdata 0 0 0
RAW 33 36 832 9 2 : tunables 54 27 8 : slabdata 4 4 0
UDP 5 16 896 4 1 : tunables 54 27 8 : slabdata 4 4 0
tw_sock_TCP 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
request_sock_TCP 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
TCP 7 8 1792 2 1 : tunables 24 12 8 : slabdata 4 4 0
eventpoll_pwq 71 159 72 53 1 : tunables 120 60 8 : slabdata 3 3 0
eventpoll_epi 71 150 128 30 1 : tunables 120 60 8 : slabdata 5 5 0
sgpool-128 2 2 4096 1 1 : tunables 24 12 8 : slabdata 2 2 0
sgpool-64 2 2 2048 2 1 : tunables 24 12 8 : slabdata 1 1 0
sgpool-32 2 4 1024 4 1 : tunables 54 27 8 : slabdata 1 1 0
sgpool-16 2 8 512 8 1 : tunables 54 27 8 : slabdata 1 1 0
sgpool-8 2 15 256 15 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_data_buffer 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
blkdev_integrity 0 0 112 34 1 : tunables 120 60 8 : slabdata 0 0 0
blkdev_queue 29 30 2888 2 2 : tunables 24 12 8 : slabdata 15 15 0
blkdev_requests 8 22 352 11 1 : tunables 54 27 8 : slabdata 2 2 0
blkdev_ioc 32 144 80 48 1 : tunables 120 60 8 : slabdata 3 3 0
fsnotify_event_holder 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
fsnotify_event 0 0 104 37 1 : tunables 120 60 8 : slabdata 0 0 0
bio-0 50 100 192 20 1 : tunables 120 60 8 : slabdata 5 5 0
biovec-256 50 50 4096 1 1 : tunables 24 12 8 : slabdata 50 50 0
biovec-128 0 0 2048 2 1 : tunables 24 12 8 : slabdata 0 0 0
biovec-64 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
biovec-16 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
bip-256 2 2 4224 1 2 : tunables 8 4 0 : slabdata 2 2 0
bip-128 0 0 2176 3 2 : tunables 24 12 8 : slabdata 0 0 0
bip-64 0 0 1152 7 2 : tunables 24 12 8 : slabdata 0 0 0
bip-16 0 0 384 10 1 : tunables 54 27 8 : slabdata 0 0 0
bip-4 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
bip-1 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
sock_inode_cache 241 275 704 5 1 : tunables 54 27 8 : slabdata 55 55 0
skbuff_fclone_cache 13 14 512 7 1 : tunables 54 27 8 : slabdata 2 2 0
skbuff_head_cache 303 450 256 15 1 : tunables 120 60 8 : slabdata 30 30 0
file_lock_cache 8 66 176 22 1 : tunables 120 60 8 : slabdata 3 3 0
net_namespace 0 0 2432 3 2 : tunables 24 12 8 : slabdata 0 0 0
shmem_inode_cache 808 830 784 5 1 : tunables 54 27 8 : slabdata 166 166 0
Acpi-Operand 4318 4505 72 53 1 : tunables 120 60 8 : slabdata 85 85 0
Acpi-ParseExt 0 0 72 53 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-Parse 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-State 0 0 80 48 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-Namespace 3088 3128 40 92 1 : tunables 120 60 8 : slabdata 34 34 0
task_delay_info 272 612 112 34 1 : tunables 120 60 8 : slabdata 18 18 0
taskstats 1 12 328 12 1 : tunables 54 27 8 : slabdata 1 1 0
proc_inode_cache 1374 1374 656 6 1 : tunables 54 27 8 : slabdata 229 229 0
sigqueue 11 24 160 24 1 : tunables 120 60 8 : slabdata 1 1 0
bdev_cache 32 48 832 4 1 : tunables 54 27 8 : slabdata 12 12 0
sysfs_dir_cache 12560 12609 144 27 1 : tunables 120 60 8 : slabdata 467 467 0
mnt_cache 32 75 256 15 1 : tunables 120 60 8 : slabdata 5 5 0
filp 1001 1470 256 15 1 : tunables 120 60 8 : slabdata 98 98 0
inode_cache 9827 9906 592 6 1 : tunables 54 27 8 : slabdata 1651 1651 0
dentry 32968 32980 192 20 1 : tunables 120 60 8 : slabdata 1649 1649 0
names_cache 9 9 4096 1 1 : tunables 24 12 8 : slabdata 9 9 0
avc_node 508 1593 64 59 1 : tunables 120 60 8 : slabdata 27 27 0
selinux_inode_security 28345 28461 72 53 1 : tunables 120 60 8 : slabdata 537 537 0
radix_tree_node 1947 2065 560 7 1 : tunables 54 27 8 : slabdata 295 295 0
key_jar 3 20 192 20 1 : tunables 120 60 8 : slabdata 1 1 0
buffer_head 15108 15207 104 37 1 : tunables 120 60 8 : slabdata 411 411 0
nsproxy 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
vm_area_struct 6150 6365 200 19 1 : tunables 120 60 8 : slabdata 335 335 0
mm_struct 69 105 1408 5 2 : tunables 24 12 8 : slabdata 21 21 0
fs_cache 59 354 64 59 1 : tunables 120 60 8 : slabdata 6 6 0
files_cache 56 187 704 11 2 : tunables 54 27 8 : slabdata 17 17 0
signal_cache 259 329 1088 7 2 : tunables 24 12 8 : slabdata 47 47 0
sighand_cache 259 294 2112 3 2 : tunables 24 12 8 : slabdata 98 98 0
task_xstate 72 180 832 9 2 : tunables 54 27 8 : slabdata 20 20 0
task_struct 269 312 2672 3 2 : tunables 24 12 8 : slabdata 104 104 0
cred_jar 467 840 192 20 1 : tunables 120 60 8 : slabdata 42 42 0
anon_vma_chain 5946 6314 48 77 1 : tunables 120 60 8 : slabdata 82 82 0
anon_vma 3281 3618 56 67 1 : tunables 120 60 8 : slabdata 54 54 0
pid 274 600 128 30 1 : tunables 120 60 8 : slabdata 20 20 0
shared_policy_node 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
numa_policy 7 28 136 28 1 : tunables 120 60 8 : slabdata 1 1 0
idr2_layer_cache 18 18 2096 3 2 : tunables 24 12 8 : slabdata 6 6 0
idr_layer_cache 275 315 544 7 1 : tunables 54 27 8 : slabdata 45 45 0
size-4194304(DMA) 0 0 4194304 1 1024 : tunables 1 1 0 : slabdata 0 0 0
size-4194304 0 0 4194304 1 1024 : tunables 1 1 0 : slabdata 0 0 0
size-2097152(DMA) 0 0 2097152 1 512 : tunables 1 1 0 : slabdata 0 0 0
size-2097152 0 0 2097152 1 512 : tunables 1 1 0 : slabdata 0 0 0
size-1048576(DMA) 0 0 1048576 1 256 : tunables 1 1 0 : slabdata 0 0 0
size-1048576 0 0 1048576 1 256 : tunables 1 1 0 : slabdata 0 0 0
size-524288(DMA) 0 0 524288 1 128 : tunables 1 1 0 : slabdata 0 0 0
size-524288 0 0 524288 1 128 : tunables 1 1 0 : slabdata 0 0 0
size-262144(DMA) 0 0 262144 1 64 : tunables 1 1 0 : slabdata 0 0 0
size-262144 1 1 262144 1 64 : tunables 1 1 0 : slabdata 1 1 0
size-131072(DMA) 0 0 131072 1 32 : tunables 8 4 0 : slabdata 0 0 0
size-131072 2 2 131072 1 32 : tunables 8 4 0 : slabdata 2 2 0
size-65536(DMA) 0 0 65536 1 16 : tunables 8 4 0 : slabdata 0 0 0
size-65536 3 3 65536 1 16 : tunables 8 4 0 : slabdata 3 3 0
size-32768(DMA) 0 0 32768 1 8 : tunables 8 4 0 : slabdata 0 0 0
size-32768 3 3 32768 1 8 : tunables 8 4 0 : slabdata 3 3 0
size-16384(DMA) 0 0 16384 1 4 : tunables 8 4 0 : slabdata 0 0 0
size-16384 23 23 16384 1 4 : tunables 8 4 0 : slabdata 23 23 0
size-8192(DMA) 0 0 8192 1 2 : tunables 8 4 0 : slabdata 0 0 0
size-8192 23 23 8192 1 2 : tunables 8 4 0 : slabdata 23 23 0
size-4096(DMA) 0 0 4096 1 1 : tunables 24 12 8 : slabdata 0 0 0
size-4096 299 299 4096 1 1 : tunables 24 12 8 : slabdata 299 299 0
size-2048(DMA) 0 0 2048 2 1 : tunables 24 12 8 : slabdata 0 0 0
size-2048 527 538 2048 2 1 : tunables 24 12 8 : slabdata 269 269 0
size-1024(DMA) 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
size-1024 1551 1620 1024 4 1 : tunables 54 27 8 : slabdata 405 405 0
size-512(DMA) 0 0 512 8 1 : tunables 54 27 8 : slabdata 0 0 0
size-512 1259 1344 512 8 1 : tunables 54 27 8 : slabdata 168 168 0
size-256(DMA) 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
size-256 1101 1260 256 15 1 : tunables 120 60 8 : slabdata 84 84 0
size-192(DMA) 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
size-192 2576 2660 192 20 1 : tunables 120 60 8 : slabdata 133 133 0
size-128(DMA) 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
size-64(DMA) 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
size-64 16383 16933 64 59 1 : tunables 120 60 8 : slabdata 287 287 0
size-32(DMA) 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
size-128 4966 5130 128 30 1 : tunables 120 60 8 : slabdata 171 171 0
size-32 422438 422912 32 112 1 : tunables 120 60 8 : slabdata 3776 3776 0
kmem_cache 186 186 32896 1 16 : tunables 8 4 0 : slabdata 186 186 0
[root@localhost ~]#
我们要想实现小对象的快速的分配回收,就要使用slab,slab在分配的时候,就要预先分配好,不够用的时候,再生成新的,,,,如果说某一个内存对象被删除了,而它事先分配的空间只是被腾空,而不会被删除的,,,,,,,,我们要使用slab allocate降低小内存对象的开销,
如下图
使用内存的策略,降低或延迟慢速子系统的服务时间,,,,,,什么样的子系统比较慢,I/O设备比较慢,怎么降低它们的时间?通过提供buffer和cache,将数据从磁盘上或从其它外围的I/O设备上,加载进来以后,直接缓存在内存当中,
1)文件系统的元数据主要是存在buffer当中的,(全称buffer cache,,,,,slab cache),,其实slab cache就在buffer当中的 (文件的元数据用buffer cache来缓存)(buffer cache中用的是slab cache?????不懂难道slab cahce是元数据,?????),,,buffer还可以用来缓存写操作的
2)磁盘I/O用的是cache,(即page cache)(数据用page cache来缓存的)
3)进程间通信尽可能使用共享内存来完成进程间通信
4)网络IO也可能比较慢,借助于buffer cache,arp cache,连接追踪等功能来提升网络IO的性能,,,,,,,其实每一个用户会话建立以后,都要占据内存空间的,以实现将用户的会话存储下来并进行追踪
1,降低微型内存对象的系统开销,使用 slab ( 当然默认已经使用了slab ),,,,,,slab仍然有可调的地方存在, 在 /proc/slabinfo 里面的每一种内存对象,都有个tunables,就是可调参数,明确定义了这一类内存对象 <limit> <batchcount> <sharedfactor> ,这三个东西??? 如果某一个对象我们需要的内容(空间)比较多的话,我们可以调整其值
2,缩减慢速子系统的服务时间,
使用buffer cache来缓存文件元数据,这仍然是调slab
使用page cache来缓存DISK IO
使用共享内存(shm share memory)来完成进程间通信
使用buffer cache,arp cache,connection tracking等功能来提升网络IO的性能
如下图
调整页面分配的,有关内存的内核参数
vm.min_free_kbytes ( vm: virtual memory )子系统的最小空闲kb数,,,内存里为什么要定义最小空闲kb数?绝大多数情况下,不需要调整此参数,只有某些特殊场景中才需要,,,比如我们的磁盘太慢了或cpu性能比较差了,,可以将它调小一点,,,,因为这段空间是无法被其它人使用的
如下图
内存由两部分组成,一部分物理内存,一部分交换内存,电脑上有好多进程,比较一进程打开一文件,就需要申请新的内存空间来使用,,,如果运行了多个进程,而内存比较少,上来就用满了内存,这时候某一个内存需要申请内存空间的时候,,,内存耗尽,系统会崩溃的,,,,,所以内存不够用时,将内存放到swap上,,,,min_free_kbytes就是定义最少要空闲多少空间以便某些进程随时使用的,,,,,,,这个时候,如果有进程需要申请新的空间了,内存不够用了,必须要交换一些内存到swap,
如下图
vm.overcommit_memory ( vm: virtual memory )调整内存的过量使用,(尤其在虚拟化环境当中,这一项尤其有用,)
0 = heuristic overcommit #启发式过量,它自己可以决定要不要过量,什么时间过量使用,意味着我们什么时候启用交换内存,以及使用多少交换内存由操作系统来决定
1 = always overcommit #总是过量,一开机就可能使用交换内存了,,,这一项是不好的(尤其是数据库服务器如Oracle,mysql上,因为太慢了 ) (有些场景中可以,比如hadoop上,因为它本来是批处理系统,对实时,对性能要求不高,但是它需要大量内存实现计算的时候,就可以使用过量内存,)
2 = commit all RAM plus a percentage of swap (may be >
100) # 所有的物理内存加上一部分swap,,,,百分比大于100%,(假设物理内存2G,最终使用的是2.5G),,到底大百分比是多少 , 由 /proc/sys/vm/overcommit_ratio 来决定,定义超出物理内存百分比多少, (只有在 overcommit_memory 为2 时, overcommit_ratio设定才有意义,,, 一般建议不要超出50% ) (如果内存是2G,交换分区只有256M,若定义成50%就麻烦大了,,,,系统会崩溃的,内存会溢出,,,所以要确保指定后的大小不能超过swap空间)(内存溢出,很严重的,因为内核想执行管理操作,就没有内存可用了,内核就找那些使用内存比较大的进程,不管是哪个进程,给它kill掉,)(内核中有个OOM killer 内存杀手,一旦发现内存过量使用,它会杀死进程的,不管进程是什么)(我们自己可以定义策略,明确说明一旦OOM现象产生了,我们要杀死哪个进程,)(杀死哪个进程,通常是根据这个进程多么像坏蛋的方式来杀死的,,,,它有个评分,每个进程都有个评分,几份像坏蛋的评分)
overcommit_memory,过量使用,就算是windows上使用vmware,开启了多台虚拟机以后,每一个虚拟机都有虚拟cpu,,,,,每个虚拟机分8个cpu,一共8个虚拟机,那么需要64个cpu,这样cpu就过量使用了(但是cpu可以虚拟,因为cpu按时间分片的,可以把cpu时间调慢点,分少点时间就可以了),,,,,,,,内存不能分得太过,一共物理机8G内存,8个虚拟机,每个虚拟机4G内存,需要32G,物理机内存不够分了,,,,所以内存的过量使用,是指的是物理机的意义上产生过量,(内存再虚拟也不能超过物理内存,因为内存是按空间的),,,,,, 超出物理内存的一部分,,,可以超多少(可以超,是因为我们有swap,)(物理内存的过量使用是以swap为前提的,),,,,,,,,,,,,,,,,,swap的性能不好,在对性能要求强的场景中,能不使用swap就不使用swap
[root@localhost ~]# cat /proc/sys/vm/overcommit_memory #overcommit_memory值默认为0
0
[root@localhost ~]#
[root@localhost ~]# ls /proc/1 #某一个进程下面, 一旦内存溢出时,要杀死谁,看谁的得分高
attr coredump_filter io mountstats pagemap stack
autogroup cpuset limits net personality stat
auxv cwd loginuid ns root statm
cgroup environ maps numa_maps sched status
clear_refs exe mem oom_adj(oom调整) schedstat syscall
cmdline fd mountinfo oom_score(oom分数) sessionid task
comm fdinfo mounts oom_score_adj(就是用来调整分数的???) smaps wchan
[root@localhost ~]#
如下图
如何调优slab cache,
#slaptop 监控slap的使用状况
[root@localhost ~]# slabtop #随时监控着当前系统上哪一种slab对象的对象数目比较多,
#当使用百分比过高时,如果再次打开类似对象,就只能清除一些缓存,腾出空间,,因为每一种缓存数多少,数目是有限定的,,,,,,我们可以调整slab参数,以使得给它有足够空闲的slab对象可用,,,,,如果判定某一种用量特别大的时候,,,,,
Active / Total Objects (% used) : 1238727(多少活动对象) / 1248667(总共多少对象) (99.2%)(使用了百分之多少)
Active / Total Slabs (% used) : 21193(多少活动对象???) / 21195(分配了多少slab) (100.0%)(占用了百分之多少)
Active / Total Caches (% used) : 100 / 187 (53.5%)
Active / Total Size (% used) : 82915.98K / 84845.15K (97.7%)
Minimum / Average / Maximum Object : 0.02K / 0.07K / 4096.00K
#对象数#活动对象数#使用百分比
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
640800 640732 99% 0.02K 4450 144 17800K avtab_node
422912 422373 99% 0.03K 3776 112 15104K size-32
33040 33026 99% 0.19K 1652 20 6608K dentry #用量大 目录项的用量大 (目录其实不是一个容器,它只是一个路径映射符,通过每一个目录可以找到需要的文件,即路径映射关系称为dentry) (每访问一个文件,每一次都要找这个路径,有点慢,所以将它缓存下来,都缓存在slab cache当中了,,所以它们的使用比例高,数量也很大,,,一旦这个比例非常高的时候,可以调大点)
28461 28421 99% 0.07K 537 53 2148K selinux_inode_security
16933 16239 95% 0.06K 287 59 1148K size-64
16104 16091 99% 0.98K 4026 4 16104K ext4_inode_cache #用量大,红帽6默认文件系统是ext4 文件系统的用量大
15207 15126 99% 0.10K 411 37 1644K buffer_head
12609 12560 99% 0.14K 467 27 1868K sysfs_dir_cache
9906 9816 99% 0.58K 1651 6 6604K inode_cache
6365 6072 95% 0.20K 335 19 1340K vm_area_struct
6314 5865 92% 0.05K 82 77 328K anon_vma_chain
5130 4940 96% 0.12K 171 30 684K size-128
4505 4318 95% 0.07K 85 53 340K Acpi-Operand
3618 3218 88% 0.05K 54 67 216K anon_vma
3128 3088 98% 0.04K 34 92 136K Acpi-Namespace
2660 2576 96% 0.19K 133 20 532K size-192
2065 1971 95% 0.55K 295 7 1180K radix_tree_node
1620 1521 93% 1.00K 405 4 1620K size-1024
1593 510 32% 0.06K 27 59 108K avc_node
1470 934 63% 0.25K 98 15 392K filp
1440 1440 100% 0.64K 240 6 960K proc_inode_cache
1344 1214 90% 0.50K 168 8 672K size-512
1260 1090 86% 0.25K 84 15 336K size-256
840 385 45% 0.19K 42 20 168K cred_jar
830 808 97% 0.77K 166 5 664K shmem_inode_cache
612 267 43% 0.11K 18 34 72K task_delay_info
600 269 44% 0.12K 20 30 80K pid
[root@localhost ~]# cat /proc/slabinfo #tunables 是可调参数, 这里一次性查看,slabtop可以动态显示相关结果
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_expect 0 0 240 16 1 : tunables 120 60 8 : slabdata 0 0 0
nf_conntrack_ffffffff81b2d1a0 0 0 312 12 1 : tunables 54 27 8 : slabdata 0 0 0
ib_mad 0 0 512 7 1 : tunables 54 27 8 : slabdata 0 0 0
fib6_nodes 22 118 64 59 1 : tunables 120 60 8 : slabdata 2 2 0
ip6_dst_cache 13 50 384 10 1 : tunables 54 27 8 : slabdata 5 5 0
ndisc_cache 5 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 0
ip6_mrt_cache 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
RAWv6 35 35 1088 7 2 : tunables 24 12 8 : slabdata 5 5 0
UDPLITEv6 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
UDPv6 4 12 1024 4 1 : tunables 54 27 8 : slabdata 3 3 0
tw_sock_TCPv6 0 0 320 12 1 : tunables 54 27 8 : slabdata 0 0 0
request_sock_TCPv6 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
TCPv6 6 6 1984 2 1 : tunables 24 12 8 : slabdata 3 3 0
jbd2_1k 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
avtab_node 640732 640800 24 144 1 : tunables 120 60 8 : slabdata 4450 4450 0
ext4_inode_cache 16093(活动对象数) 16108 1000 4 1 : tunables 54(最大54) 27(一批可传 27,系统刚启动的进候,一批可传 27个 ) 8 (SMP中,多CPU共享的): slabdata 4027 4027 0
ext4_xattr 3 44 88 44 1 : tunables 120 60 8 : slabdata 1 1 0
ext4_free_block_extents 0 0 56 67 1 : tunables 120 60 8 : slabdata 0 0 0
ext4_alloc_context 0 0 136 28 1 : tunables 120 60 8 : slabdata 0 0 0
ext4_prealloc_space 9 37 104 37 1 : tunables 120 60 8 : slabdata 1 1 0
ext4_system_zone 0 0 40 92 1 : tunables 120 60 8 : slabdata 0 0 0
jbd2_journal_handle 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
jbd2_journal_head 8 68 112 34 1 : tunables 120 60 8 : slabdata 2 2 0
jbd2_revoke_table 6 202 16 202 1 : tunables 120 60 8 : slabdata 1 1 0
jbd2_revoke_record 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
sd_ext_cdb 2 112 32 112 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_sense_cache 3 30 128 30 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_cmd_cache 3 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 0
dm_raid1_read_record 0 0 1064 7 2 : tunables 24 12 8 : slabdata 0 0 0
kcopyd_job 0 0 3240 2 2 : tunables 24 12 8 : slabdata 0 0 0
io 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
dm_uevent 0 0 2608 3 2 : tunables 24 12 8 : slabdata 0 0 0
dm_rq_clone_bio_info 0 0 16 202 1 : tunables 120 60 8 : slabdata 0 0 0
dm_rq_target_io 0 0 424 9 1 : tunables 54 27 8 : slabdata 0 0 0
dm_target_io 48 576 24 144 1 : tunables 120 60 8 : slabdata 4 4 0
dm_io 48 201 56 67 1 : tunables 120 60 8 : slabdata 3 3 0
flow_cache 0 0 104 37 1 : tunables 120 60 8 : slabdata 0 0 0
uhci_urb_priv 1 67 56 67 1 : tunables 120 60 8 : slabdata 1 1 0
cfq_io_context 31 112 136 28 1 : tunables 120 60 8 : slabdata 4 4 0
cfq_queue 32 112 240 16 1 : tunables 120 60 8 : slabdata 7 7 0
bsg_cmd 0 0 312 12 1 : tunables 54 27 8 : slabdata 0 0 0
mqueue_inode_cache 1 4 896 4 1 : tunables 54 27 8 : slabdata 1 1 0
isofs_inode_cache 0 0 640 6 1 : tunables 54 27 8 : slabdata 0 0 0
hugetlbfs_inode_cache 1 6 608 6 1 : tunables 54 27 8 : slabdata 1 1 0
dquot 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
kioctx 0 0 384 10 1 : tunables 54 27 8 : slabdata 0 0 0
kiocb 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
inotify_event_private_data 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
inotify_inode_mark_entry 112 128 120 32 1 : tunables 120 60 8 : slabdata 4 4 0
dnotify_mark_entry 0 0 120 32 1 : tunables 120 60 8 : slabdata 0 0 0
dnotify_struct 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
dio 0 0 640 6 1 : tunables 54 27 8 : slabdata 0 0 0
fasync_cache 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
khugepaged_mm_slot 0 0 40 92 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_mm_slot 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_stable_node 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_rmap_item 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
utrace_engine 0 0 56 67 1 : tunables 120 60 8 : slabdata 0 0 0
utrace 1 59 64 59 1 : tunables 120 60 8 : slabdata 1 1 0
pid_namespace 0 0 2168 3 2 : tunables 24 12 8 : slabdata 0 0 0
posix_timers_cache 0 0 176 22 1 : tunables 120 60 8 : slabdata 0 0 0
uid_cache 6 60 128 30 1 : tunables 120 60 8 : slabdata 2 2 0
UNIX 110 144 896 4 1 : tunables 54 27 8 : slabdata 36 36 0
ip_mrt_cache 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
UDP-Lite 0 0 896 4 1 : tunables 54 27 8 : slabdata 0 0 0
tcp_bind_bucket 7 59 64 59 1 : tunables 120 60 8 : slabdata 1 1 0
inet_peer_cache 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
secpath_cache 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
xfrm_dst_cache 0 0 448 8 1 : tunables 54 27 8 : slabdata 0 0 0
ip_fib_alias 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
ip_fib_hash 10 53 72 53 1 : tunables 120 60 8 : slabdata 1 1 0
ip_dst_cache 9 20 384 10 1 : tunables 54 27 8 : slabdata 2 2 0
arp_cache 4 15 256 15 1 : tunables 120 60 8 : slabdata 1 1 0
PING 0 0 832 9 2 : tunables 54 27 8 : slabdata 0 0 0
RAW 33 36 832 9 2 : tunables 54 27 8 : slabdata 4 4 0
UDP 5 16 896 4 1 : tunables 54 27 8 : slabdata 4 4 0
tw_sock_TCP 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
request_sock_TCP 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
TCP 7 8 1792 2 1 : tunables 24 12 8 : slabdata 4 4 0
eventpoll_pwq 71 159 72 53 1 : tunables 120 60 8 : slabdata 3 3 0
eventpoll_epi 71 150 128 30 1 : tunables 120 60 8 : slabdata 5 5 0
sgpool-128 2 2 4096 1 1 : tunables 24 12 8 : slabdata 2 2 0
sgpool-64 2 2 2048 2 1 : tunables 24 12 8 : slabdata 1 1 0
sgpool-32 2 4 1024 4 1 : tunables 54 27 8 : slabdata 1 1 0
sgpool-16 2 8 512 8 1 : tunables 54 27 8 : slabdata 1 1 0
sgpool-8 2 15 256 15 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_data_buffer 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
blkdev_integrity 0 0 112 34 1 : tunables 120 60 8 : slabdata 0 0 0
blkdev_queue 29 30 2888 2 2 : tunables 24 12 8 : slabdata 15 15 0
blkdev_requests 8 22 352 11 1 : tunables 54 27 8 : slabdata 2 2 0
blkdev_ioc 32 144 80 48 1 : tunables 120 60 8 : slabdata 3 3 0
fsnotify_event_holder 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
fsnotify_event 0 0 104 37 1 : tunables 120 60 8 : slabdata 0 0 0
bio-0 50 100 192 20 1 : tunables 120 60 8 : slabdata 5 5 0
biovec-256 50 50 4096 1 1 : tunables 24 12 8 : slabdata 50 50 0
biovec-128 0 0 2048 2 1 : tunables 24 12 8 : slabdata 0 0 0
biovec-64 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
biovec-16 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
bip-256 2 2 4224 1 2 : tunables 8 4 0 : slabdata 2 2 0
bip-128 0 0 2176 3 2 : tunables 24 12 8 : slabdata 0 0 0
bip-64 0 0 1152 7 2 : tunables 24 12 8 : slabdata 0 0 0
bip-16 0 0 384 10 1 : tunables 54 27 8 : slabdata 0 0 0
bip-4 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
bip-1 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
sock_inode_cache 234 280 704 5 1 : tunables 54 27 8 : slabdata 56 56 0
skbuff_fclone_cache 4 14 512 7 1 : tunables 54 27 8 : slabdata 2 2 0
skbuff_head_cache 289 450 256 15 1 : tunables 120 60 8 : slabdata 30 30 0
file_lock_cache 8 66 176 22 1 : tunables 120 60 8 : slabdata 3 3 0
net_namespace 0 0 2432 3 2 : tunables 24 12 8 : slabdata 0 0 0
shmem_inode_cache 808 830 784 5 1 : tunables 54 27 8 : slabdata 166 166 0
Acpi-Operand 4318 4505 72 53 1 : tunables 120 60 8 : slabdata 85 85 0
Acpi-ParseExt 0 0 72 53 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-Parse 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-State 0 0 80 48 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-Namespace 3088 3128 40 92 1 : tunables 120 60 8 : slabdata 34 34 0
task_delay_info 281 612 112 34 1 : tunables 120 60 8 : slabdata 18 18 0
taskstats 1 12 328 12 1 : tunables 54 27 8 : slabdata 1 1 0
proc_inode_cache 1440 1440 656 6 1 : tunables 54 27 8 : slabdata 240 240 0
sigqueue 19 72 160 24 1 : tunables 120 60 8 : slabdata 3 3 0
bdev_cache 32 48 832 4 1 : tunables 54 27 8 : slabdata 12 12 0
sysfs_dir_cache 12560 12609 144 27 1 : tunables 120 60 8 : slabdata 467 467 0
mnt_cache 32 75 256 15 1 : tunables 120 60 8 : slabdata 5 5 0
filp 1076 1470 256 15 1 : tunables 120 60 8 : slabdata 98 98 0
inode_cache 9845 9906 592 6 1 : tunables 54 27 8 : slabdata 1651 1651 0
dentry 33083 33120 192 20 1 : tunables 120 60 8 : slabdata 1656 1656 0
names_cache 12 12 4096 1 1 : tunables 24 12 8 : slabdata 12 12 0
avc_node 502 1593 64 59 1 : tunables 120 60 8 : slabdata 27 27 0
selinux_inode_security 28460 28514 72 53 1 : tunables 120 60 8 : slabdata 538 538 0
radix_tree_node 1991 2065 560 7 1 : tunables 54 27 8 : slabdata 295 295 0
key_jar 3 20 192 20 1 : tunables 120 60 8 : slabdata 1 1 0
buffer_head 15136 15207 104 37 1 : tunables 120 60 8 : slabdata 411 411 0
nsproxy 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
vm_area_struct 6137 6365 200 19 1 : tunables 120 60 8 : slabdata 335 335 0
mm_struct 71 105 1408 5 2 : tunables 24 12 8 : slabdata 21 21 0
fs_cache 69 354 64 59 1 : tunables 120 60 8 : slabdata 6 6 0
files_cache 69 187 704 11 2 : tunables 54 27 8 : slabdata 17 17 0
signal_cache 265 329 1088 7 2 : tunables 24 12 8 : slabdata 47 47 0
sighand_cache 265 294 2112 3 2 : tunables 24 12 8 : slabdata 98 98 0
task_xstate 79 189 832 9 2 : tunables 54 27 8 : slabdata 21 21 0
task_struct 274 315 2672 3 2 : tunables 24 12 8 : slabdata 105 105 0
cred_jar 517 840 192 20 1 : tunables 120 60 8 : slabdata 42 42 0
anon_vma_chain 5932 6314 48 77 1 : tunables 120 60 8 : slabdata 82 82 0
anon_vma 3275 3618 56 67 1 : tunables 120 60 8 : slabdata 54 54 0
pid 283 600 128 30 1 : tunables 120 60 8 : slabdata 20 20 0
shared_policy_node 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
numa_policy 7 28 136 28 1 : tunables 120 60 8 : slabdata 1 1 0
idr2_layer_cache 18 18 2096 3 2 : tunables 24 12 8 : slabdata 6 6 0
idr_layer_cache 275 315 544 7 1 : tunables 54 27 8 : slabdata 45 45 0
size-4194304(DMA) 0 0 4194304 1 1024 : tunables 1 1 0 : slabdata 0 0 0
size-4194304 0 0 4194304 1 1024 : tunables 1 1 0 : slabdata 0 0 0
size-2097152(DMA) 0 0 2097152 1 512 : tunables 1 1 0 : slabdata 0 0 0
size-2097152 0 0 2097152 1 512 : tunables 1 1 0 : slabdata 0 0 0
size-1048576(DMA) 0 0 1048576 1 256 : tunables 1 1 0 : slabdata 0 0 0
size-1048576 0 0 1048576 1 256 : tunables 1 1 0 : slabdata 0 0 0
size-524288(DMA) 0 0 524288 1 128 : tunables 1 1 0 : slabdata 0 0 0
size-524288 0 0 524288 1 128 : tunables 1 1 0 : slabdata 0 0 0
size-262144(DMA) 0 0 262144 1 64 : tunables 1 1 0 : slabdata 0 0 0
size-262144 1 1 262144 1 64 : tunables 1 1 0 : slabdata 1 1 0
size-131072(DMA) 0 0 131072 1 32 : tunables 8 4 0 : slabdata 0 0 0
size-131072 2 2 131072 1 32 : tunables 8 4 0 : slabdata 2 2 0
size-65536(DMA) 0 0 65536 1 16 : tunables 8 4 0 : slabdata 0 0 0
size-65536 3 3 65536 1 16 : tunables 8 4 0 : slabdata 3 3 0
size-32768(DMA) 0 0 32768 1 8 : tunables 8 4 0 : slabdata 0 0 0
size-32768 3 3 32768 1 8 : tunables 8 4 0 : slabdata 3 3 0
size-16384(DMA) 0 0 16384 1 4 : tunables 8 4 0 : slabdata 0 0 0
size-16384 23 23 16384 1 4 : tunables 8 4 0 : slabdata 23 23 0
size-8192(DMA) 0 0 8192 1 2 : tunables 8 4 0 : slabdata 0 0 0
size-8192 22 22 8192 1 2 : tunables 8 4 0 : slabdata 22 22 0
size-4096(DMA) 0 0 4096 1 1 : tunables 24 12 8 : slabdata 0 0 0
size-4096 298 298 4096 1 1 : tunables 24 12 8 : slabdata 298 298 0
size-2048(DMA) 0 0 2048 2 1 : tunables 24 12 8 : slabdata 0 0 0
size-2048 531 544 2048 2 1 : tunables 24 12 8 : slabdata 271 272 0
size-1024(DMA) 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
size-1024 1590 1620 1024 4 1 : tunables 54 27 8 : slabdata 405 405 0
size-512(DMA) 0 0 512 8 1 : tunables 54 27 8 : slabdata 0 0 0
size-512 1222 1344 512 8 1 : tunables 54 27 8 : slabdata 168 168 0
size-256(DMA) 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
size-256 1147 1260 256 15 1 : tunables 120 60 8 : slabdata 84 84 0
size-192(DMA) 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
size-192 2576 2660 192 20 1 : tunables 120 60 8 : slabdata 133 133 0
size-128(DMA) 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
size-64(DMA) 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
size-64 16379 16933 64 59 1 : tunables 120 60 8 : slabdata 287 287 0
size-32(DMA) 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
size-128 4962 5130 128 30 1 : tunables 120 60 8 : slabdata 171 171 0
size-32 422450 422912 32 112 1 : tunables 120 60 8 : slabdata 3776 3776 0
kmem_cache 186 186 32896 1 16 : tunables 8 4 0 : slabdata 186 186 0
[root@localhost ~]#
如下图
tunables 可调的三个参数
limit: 可以被每一个cpu缓存的最大对象数
batchcount: 一次性传送到cpu缓存中对象的个数,,,当某个cpu的关于这么个缓存对象变为空的时候(缓存空间已经空了的时候),最大一次性可以向这个cpu缓存当中传输多少个这一类对象让cpu缓存下来
shared: 在SMP架构当中,在各cpu之间,可以共享多少个slab cache,
echo“cache_name limit batchcount shared" > /proc/slabinfo
[root@localhost ~]# echo 'ext4_inode_cache 108 54 8' > /proc/slabinfo #ext4_inode_cache是缓存对象的名称 108 是总共, 54是一批, 8是几个cpu共享的
[root@localhost ~]#
[root@localhost ~]# cat /proc/slabinfo
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_expect 0 0 240 16 1 : tunables 120 60 8 : slabdata 0 0 0
nf_conntrack_ffffffff81b2d1a0 0 0 312 12 1 : tunables 54 27 8 : slabdata 0 0 0
ib_mad 0 0 512 7 1 : tunables 54 27 8 : slabdata 0 0 0
fib6_nodes 22 118 64 59 1 : tunables 120 60 8 : slabdata 2 2 0
ip6_dst_cache 13 50 384 10 1 : tunables 54 27 8 : slabdata 5 5 0
ndisc_cache 5 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 0
ip6_mrt_cache 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
RAWv6 35 35 1088 7 2 : tunables 24 12 8 : slabdata 5 5 0
UDPLITEv6 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
UDPv6 4 12 1024 4 1 : tunables 54 27 8 : slabdata 3 3 0
tw_sock_TCPv6 0 0 320 12 1 : tunables 54 27 8 : slabdata 0 0 0
request_sock_TCPv6 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
TCPv6 6 6 1984 2 1 : tunables 24 12 8 : slabdata 3 3 0
jbd2_1k 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
avtab_node 640732 640800 24 144 1 : tunables 120 60 8 : slabdata 4450 4450 0
ext4_inode_cache 16094 16108 1000 4 1 : tunables 108(值变了) 54(值变了) 8 : slabdata 4027 4027 0
ext4_xattr 3 44 88 44 1 : tunables 120 60 8 : slabdata 1 1 0
ext4_free_block_extents 0 0 56 67 1 : tunables 120 60 8 : slabdata 0 0 0
ext4_alloc_context 0 0 136 28 1 : tunables 120 60 8 : slabdata 0 0 0
ext4_prealloc_space 9 37 104 37 1 : tunables 120 60 8 : slabdata 1 1 0
ext4_system_zone 0 0 40 92 1 : tunables 120 60 8 : slabdata 0 0 0
jbd2_journal_handle 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
jbd2_journal_head 3 68 112 34 1 : tunables 120 60 8 : slabdata 2 2 0
jbd2_revoke_table 6 202 16 202 1 : tunables 120 60 8 : slabdata 1 1 0
jbd2_revoke_record 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
sd_ext_cdb 2 112 32 112 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_sense_cache 4 30 128 30 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_cmd_cache 4 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 0
dm_raid1_read_record 0 0 1064 7 2 : tunables 24 12 8 : slabdata 0 0 0
kcopyd_job 0 0 3240 2 2 : tunables 24 12 8 : slabdata 0 0 0
io 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
dm_uevent 0 0 2608 3 2 : tunables 24 12 8 : slabdata 0 0 0
dm_rq_clone_bio_info 0 0 16 202 1 : tunables 120 60 8 : slabdata 0 0 0
dm_rq_target_io 0 0 424 9 1 : tunables 54 27 8 : slabdata 0 0 0
dm_target_io 49 576 24 144 1 : tunables 120 60 8 : slabdata 4 4 0
dm_io 49 201 56 67 1 : tunables 120 60 8 : slabdata 3 3 0
flow_cache 0 0 104 37 1 : tunables 120 60 8 : slabdata 0 0 0
uhci_urb_priv 1 67 56 67 1 : tunables 120 60 8 : slabdata 1 1 0
cfq_io_context 31 112 136 28 1 : tunables 120 60 8 : slabdata 4 4 0
cfq_queue 32 112 240 16 1 : tunables 120 60 8 : slabdata 7 7 0
bsg_cmd 0 0 312 12 1 : tunables 54 27 8 : slabdata 0 0 0
mqueue_inode_cache 1 4 896 4 1 : tunables 54 27 8 : slabdata 1 1 0
isofs_inode_cache 0 0 640 6 1 : tunables 54 27 8 : slabdata 0 0 0
hugetlbfs_inode_cache 1 6 608 6 1 : tunables 54 27 8 : slabdata 1 1 0
dquot 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
kioctx 0 0 384 10 1 : tunables 54 27 8 : slabdata 0 0 0
kiocb 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
inotify_event_private_data 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
inotify_inode_mark_entry 112 128 120 32 1 : tunables 120 60 8 : slabdata 4 4 0
dnotify_mark_entry 0 0 120 32 1 : tunables 120 60 8 : slabdata 0 0 0
dnotify_struct 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
dio 0 0 640 6 1 : tunables 54 27 8 : slabdata 0 0 0
fasync_cache 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
khugepaged_mm_slot 0 0 40 92 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_mm_slot 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_stable_node 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
ksm_rmap_item 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
utrace_engine 0 0 56 67 1 : tunables 120 60 8 : slabdata 0 0 0
utrace 1 59 64 59 1 : tunables 120 60 8 : slabdata 1 1 0
pid_namespace 0 0 2168 3 2 : tunables 24 12 8 : slabdata 0 0 0
posix_timers_cache 0 0 176 22 1 : tunables 120 60 8 : slabdata 0 0 0
uid_cache 6 60 128 30 1 : tunables 120 60 8 : slabdata 2 2 0
UNIX 110 144 896 4 1 : tunables 54 27 8 : slabdata 36 36 0
ip_mrt_cache 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
UDP-Lite 0 0 896 4 1 : tunables 54 27 8 : slabdata 0 0 0
tcp_bind_bucket 7 59 64 59 1 : tunables 120 60 8 : slabdata 1 1 0
inet_peer_cache 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
secpath_cache 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
xfrm_dst_cache 0 0 448 8 1 : tunables 54 27 8 : slabdata 0 0 0
ip_fib_alias 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
ip_fib_hash 10 53 72 53 1 : tunables 120 60 8 : slabdata 1 1 0
ip_dst_cache 10 10 384 10 1 : tunables 54 27 8 : slabdata 1 1 0
arp_cache 4 15 256 15 1 : tunables 120 60 8 : slabdata 1 1 0
PING 0 0 832 9 2 : tunables 54 27 8 : slabdata 0 0 0
RAW 33 36 832 9 2 : tunables 54 27 8 : slabdata 4 4 0
UDP 5 16 896 4 1 : tunables 54 27 8 : slabdata 4 4 0
tw_sock_TCP 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
request_sock_TCP 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
TCP 7 8 1792 2 1 : tunables 24 12 8 : slabdata 4 4 0
eventpoll_pwq 71 159 72 53 1 : tunables 120 60 8 : slabdata 3 3 0
eventpoll_epi 71 150 128 30 1 : tunables 120 60 8 : slabdata 5 5 0
sgpool-128 2 2 4096 1 1 : tunables 24 12 8 : slabdata 2 2 0
sgpool-64 2 2 2048 2 1 : tunables 24 12 8 : slabdata 1 1 0
sgpool-32 2 4 1024 4 1 : tunables 54 27 8 : slabdata 1 1 0
sgpool-16 2 8 512 8 1 : tunables 54 27 8 : slabdata 1 1 0
sgpool-8 2 15 256 15 1 : tunables 120 60 8 : slabdata 1 1 0
scsi_data_buffer 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
blkdev_integrity 0 0 112 34 1 : tunables 120 60 8 : slabdata 0 0 0
blkdev_queue 29 30 2888 2 2 : tunables 24 12 8 : slabdata 15 15 0
blkdev_requests 8 22 352 11 1 : tunables 54 27 8 : slabdata 2 2 0
blkdev_ioc 32 144 80 48 1 : tunables 120 60 8 : slabdata 3 3 0
fsnotify_event_holder 0 0 24 144 1 : tunables 120 60 8 : slabdata 0 0 0
fsnotify_event 0 0 104 37 1 : tunables 120 60 8 : slabdata 0 0 0
bio-0 51 100 192 20 1 : tunables 120 60 8 : slabdata 5 5 0
biovec-256 50 50 4096 1 1 : tunables 24 12 8 : slabdata 50 50 0
biovec-128 0 0 2048 2 1 : tunables 24 12 8 : slabdata 0 0 0
biovec-64 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
biovec-16 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
bip-256 2 2 4224 1 2 : tunables 8 4 0 : slabdata 2 2 0
bip-128 0 0 2176 3 2 : tunables 24 12 8 : slabdata 0 0 0
bip-64 0 0 1152 7 2 : tunables 24 12 8 : slabdata 0 0 0
bip-16 0 0 384 10 1 : tunables 54 27 8 : slabdata 0 0 0
bip-4 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
bip-1 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
sock_inode_cache 271 280 704 5 1 : tunables 54 27 8 : slabdata 56 56 0
skbuff_fclone_cache 7 7 512 7 1 : tunables 54 27 8 : slabdata 1 1 0
skbuff_head_cache 323 450 256 15 1 : tunables 120 60 8 : slabdata 30 30 0
file_lock_cache 8 66 176 22 1 : tunables 120 60 8 : slabdata 3 3 0
net_namespace 0 0 2432 3 2 : tunables 24 12 8 : slabdata 0 0 0
shmem_inode_cache 808 830 784 5 1 : tunables 54 27 8 : slabdata 166 166 0
Acpi-Operand 4318 4505 72 53 1 : tunables 120 60 8 : slabdata 85 85 0
Acpi-ParseExt 0 0 72 53 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-Parse 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-State 0 0 80 48 1 : tunables 120 60 8 : slabdata 0 0 0
Acpi-Namespace 3088 3128 40 92 1 : tunables 120 60 8 : slabdata 34 34 0
task_delay_info 318 612 112 34 1 : tunables 120 60 8 : slabdata 18 18 0
taskstats 1 12 328 12 1 : tunables 54 27 8 : slabdata 1 1 0
proc_inode_cache 1446 1446 656 6 1 : tunables 54 27 8 : slabdata 241 241 0
sigqueue 40 72 160 24 1 : tunables 120 60 8 : slabdata 3 3 0
bdev_cache 32 48 832 4 1 : tunables 54 27 8 : slabdata 12 12 0
sysfs_dir_cache 12560 12609 144 27 1 : tunables 120 60 8 : slabdata 467 467 0
mnt_cache 32 75 256 15 1 : tunables 120 60 8 : slabdata 5 5 0
filp 1151 1470 256 15 1 : tunables 120 60 8 : slabdata 98 98 0
inode_cache 9839 9906 592 6 1 : tunables 54 27 8 : slabdata 1651 1651 0
dentry 33081 33120 192 20 1 : tunables 120 60 8 : slabdata 1656 1656 0
names_cache 17 20 4096 1 1 : tunables 24 12 8 : slabdata 17 20 0
avc_node 505 1593 64 59 1 : tunables 120 60 8 : slabdata 27 27 0
selinux_inode_security 28466 28514 72 53 1 : tunables 120 60 8 : slabdata 538 538 0
radix_tree_node 1991 2065 560 7 1 : tunables 54 27 8 : slabdata 295 295 0
key_jar 3 20 192 20 1 : tunables 120 60 8 : slabdata 1 1 0
buffer_head 15138 15207 104 37 1 : tunables 120 60 8 : slabdata 411 411 0
nsproxy 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
vm_area_struct 6151 6365 200 19 1 : tunables 120 60 8 : slabdata 335 335 0
mm_struct 73 105 1408 5 2 : tunables 24 12 8 : slabdata 21 21 0
fs_cache 66 354 64 59 1 : tunables 120 60 8 : slabdata 6 6 0
files_cache 67 187 704 11 2 : tunables 54 27 8 : slabdata 17 17 0
signal_cache 264 329 1088 7 2 : tunables 24 12 8 : slabdata 47 47 0
sighand_cache 264 294 2112 3 2 : tunables 24 12 8 : slabdata 98 98 0
task_xstate 118 180 832 9 2 : tunables 54 27 8 : slabdata 20 20 0
task_struct 306 312 2672 3 2 : tunables 24 12 8 : slabdata 104 104 0
cred_jar 450 840 192 20 1 : tunables 120 60 8 : slabdata 42 42 0
anon_vma_chain 5943 6314 48 77 1 : tunables 120 60 8 : slabdata 82 82 0
anon_vma 3314 3618 56 67 1 : tunables 120 60 8 : slabdata 54 54 0
pid 320 600 128 30 1 : tunables 120 60 8 : slabdata 20 20 0
shared_policy_node 0 0 48 77 1 : tunables 120 60 8 : slabdata 0 0 0
numa_policy 7 28 136 28 1 : tunables 120 60 8 : slabdata 1 1 0
idr2_layer_cache 18 18 2096 3 2 : tunables 24 12 8 : slabdata 6 6 0
idr_layer_cache 275 315 544 7 1 : tunables 54 27 8 : slabdata 45 45 0
size-4194304(DMA) 0 0 4194304 1 1024 : tunables 1 1 0 : slabdata 0 0 0
size-4194304 0 0 4194304 1 1024 : tunables 1 1 0 : slabdata 0 0 0
size-2097152(DMA) 0 0 2097152 1 512 : tunables 1 1 0 : slabdata 0 0 0
size-2097152 0 0 2097152 1 512 : tunables 1 1 0 : slabdata 0 0 0
size-1048576(DMA) 0 0 1048576 1 256 : tunables 1 1 0 : slabdata 0 0 0
size-1048576 0 0 1048576 1 256 : tunables 1 1 0 : slabdata 0 0 0
size-524288(DMA) 0 0 524288 1 128 : tunables 1 1 0 : slabdata 0 0 0
size-524288 0 0 524288 1 128 : tunables 1 1 0 : slabdata 0 0 0
size-262144(DMA) 0 0 262144 1 64 : tunables 1 1 0 : slabdata 0 0 0
size-262144 1 1 262144 1 64 : tunables 1 1 0 : slabdata 1 1 0
size-131072(DMA) 0 0 131072 1 32 : tunables 8 4 0 : slabdata 0 0 0
size-131072 2 2 131072 1 32 : tunables 8 4 0 : slabdata 2 2 0
size-65536(DMA) 0 0 65536 1 16 : tunables 8 4 0 : slabdata 0 0 0
size-65536 3 3 65536 1 16 : tunables 8 4 0 : slabdata 3 3 0
size-32768(DMA) 0 0 32768 1 8 : tunables 8 4 0 : slabdata 0 0 0
size-32768 3 3 32768 1 8 : tunables 8 4 0 : slabdata 3 3 0
size-16384(DMA) 0 0 16384 1 4 : tunables 8 4 0 : slabdata 0 0 0
size-16384 23 23 16384 1 4 : tunables 8 4 0 : slabdata 23 23 0
size-8192(DMA) 0 0 8192 1 2 : tunables 8 4 0 : slabdata 0 0 0
size-8192 22 22 8192 1 2 : tunables 8 4 0 : slabdata 22 22 0
size-4096(DMA) 0 0 4096 1 1 : tunables 24 12 8 : slabdata 0 0 0
size-4096 299 299 4096 1 1 : tunables 24 12 8 : slabdata 299 299 0
size-2048(DMA) 0 0 2048 2 1 : tunables 24 12 8 : slabdata 0 0 0
size-2048 534 534 2048 2 1 : tunables 24 12 8 : slabdata 267 267 0
size-1024(DMA) 0 0 1024 4 1 : tunables 54 27 8 : slabdata 0 0 0
size-1024 1601 1620 1024 4 1 : tunables 54 27 8 : slabdata 405 405 0
size-512(DMA) 0 0 512 8 1 : tunables 54 27 8 : slabdata 0 0 0
size-512 1288 1344 512 8 1 : tunables 54 27 8 : slabdata 168 168 0
size-256(DMA) 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
size-256 1165 1260 256 15 1 : tunables 120 60 8 : slabdata 84 84 0
size-192(DMA) 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0
size-192 2576 2660 192 20 1 : tunables 120 60 8 : slabdata 133 133 0
size-128(DMA) 0 0 128 30 1 : tunables 120 60 8 : slabdata 0 0 0
size-64(DMA) 0 0 64 59 1 : tunables 120 60 8 : slabdata 0 0 0
size-64 16343 16933 64 59 1 : tunables 120 60 8 : slabdata 287 287 0
size-32(DMA) 0 0 32 112 1 : tunables 120 60 8 : slabdata 0 0 0
size-128 5003 5130 128 30 1 : tunables 120 60 8 : slabdata 171 171 0
size-32 422563 422912 32 112 1 : tunables 120 60 8 : slabdata 3776 3776 0
kmem_cache 186 186 32896 1 16 : tunables 8 4 0 : slabdata 186 186 0
[root@localhost ~]#
调大slab cache 可以提升cpu在访问内存小对象的时候的性能
如何调整网络I/O的ARP缓存
如下图
默认情况下ARP的解析结果都缓存在/proc/net/arp 文件当中,默认最多缓存软限制512个条目,硬限制是1024个,(超出512的只能缓存很短的时间),,,比如一次可以存 768个,超出512个的很快(一般5秒钟)被删除,,,,,,,,,,,,,,,一旦超出了,我们的内核有个子系统叫垃圾收集器 Garbage collection,会移除那些超出的,过期的条目,,,,,,,,,arp通常只能缓存5分钟,,,,,如果arp缓存空间不够用的话,解析会被频繁的刷新,,,,,,,,,如果我们处于一个非常大的物理网络中的时候,arp缓存可能需要调大,(只有物理网络非常大,才需要调)(C网只有256台主机????254台吧,512个够大了,不必调)(所谓调优是为极端场景准备的)
查看当前主机上缓存了多少个条目,#ip neighbor list #neighbor 是ip的子命令
# ip neighbor flush dev ethX 清空某个设备上所记录的所有缓存条目
如下图
Tuning ARP cache 三个门槛(三个预值)
net.ipv4.neigh.default.gc_ thresh1
default 128 #条目少于128个的时候,垃圾回收器不管它,不管它这个条目是不是已经过期了,不管它里面的条目是否需要清理,垃圾回收器根本就不回收
net.ipv4.neigh.default.gc_ thresh2
default 512 #当超出512个的时候(软限制),不但是清理过期的,还要清理超出软限的,达到硬限中限定的时间的长度的
net.ipv4.neigh.default.gc_ thresh3
default 1024 #硬限制,
net.ipv4.neigh.default.gc_ interval
#一旦需要清理,(超出128),清理过期条目的
两个过期,1)超出自身缓存的ttl值的,默认ttl值是5分钟,,,,2)超出软限制,而且是5秒钟
echo 值 > 相应的中去比如 net.ipv4.neigh.default.gc_ interval 这个文件(可以locate一下)
想永久有效的话,也可以 写到 /etc/sysctl.conf当中 ,,马哥不演示了
如下图,
页缓存,一大堆的活动页面的主要目的主要是用来降低磁盘I/O的,,,,,,减少文件读取所依赖的磁盘I/O的,所以它会把文件读取过来缓存在内存当中,,,,多次访问同一文件时就直接在内存中访问了,而这些页面就是来自 page cache,,page cache的主要目的是为了读,加速读操作的
读进来的文件有可能会被修改,修改完后,过一段时间,会清洗(同步)到磁盘上去的
清洗过程如何实现?意味着将这些 page cache 中的内容给它同步到磁盘上去
同步的过程,因为硬盘慢,内存快,所以有可能借助于buffer来完成,,当然有些操作也可以直接在page cache中完成,,,并没有严格限定写必须要buffer,读必须要cache
page cache如何降低I/O请求?
1)可以缓存目录读取?????不懂
2)普通文件的读和写都可以使用page cache,这里的写不是指倾写,而是指文件自身的修改(修改的过程叫写),修改完后使用回写策略,过一段时间才同步到磁盘上去的,同步到磁盘的过程才叫倾写
3)reading和writing是通过块设备的disk io 来实现?????
4)为了加速,可以使用内存映射
5)有时过量内存的使用,会将一些page cache交换到 swap 分区上面的(如果没有写到磁盘上去的话)
如下图,
如何调整 page cache,
vm.lowmem_reserve_ratio #内存很低时?????,我们预留的比率,,为page cache预留的空间
vm.vfs_cache_pressure
vm.page-cluster
vm.zone_reclaim_mode
如下图,
vm.lowmem_reserve_ratio
low memory 指的是第一段内存,zoom normal和 zoom dna 那一段????在第一段内存里面,我们预留多少空间,,,当然在64位系统上这个参数不用调了,,马哥不讲了
如下图,
vm.vfs_cache_pressure 虚拟文件系统的缓存pressure,,,,
控制内存回收内存的趋势,,,,, 我们的内核在什么情况下才去回收那些被用于缓存目录dentry以及inode对象的内存,,,,为了加速文件,目录的访问,目录的元数据和文件的元数据都应该缓存在内存里面,,,,这些内存其实是不应该回收的,,,,比起其它缓存对象,它们可能重要性更高,,,它主要是用来定义比起其它缓存对象(如page cache,其它buffer),我们在什么场景下才去回收目录的dentry和文件的inode所占据的空间,,,,,,,,,,,,,
默认值是vfs.cache_pressure=100,就是回收page cache和swap cache与dentry与inode对象是同等的,但是我们在正常情况下 回收dentry与inode对象,应该尽可能权重小点,即尽量不回收,,,,,,,,,,,
0 <vfs.cache_pressure<99,倾向于保留dentry与inode对象,,,,,,,,
vfs.cache_pressure=0,永久保留(不回收)dentry与inode对象,但是有可能内存溢出,不建议使用,,,,,,
vfs.cache_pressure>100,倾向于回收dentry与inode对象
这些参数很多时候是不需要调整的,只有在某些极端场景下才需要调整
如下图
页组,页簇 page-cluster
如果我们需要将数据从内存给它交换出暂时性放到交换内存中的时候,一次拿几个页面(一次性清出多少个页面到交换分区的)给它放到交换内存中去,,,,,,,page-cluster给出的值作为幂指数来使用的,,,,
page-cluster=1就是一次性交换出去2的一次方个
page-cluster=2就是一次性交换出去2的二次方个,4个页面
page-cluster=3就是一次性交换出去2的三次方个,,8个页面,,,默认就是page-cluster=3
在某些场景下,只有我们的内存需要频繁使用交换分区的时候,调大此值才有意义,一般不要大于4,page-cluster=4可以获得稍微的性能改进,,,,在虚拟化场景中,在云计算场景中,这个值用得可能性大,
同一个物理机上运行多个虚拟机,很可能使用的内存超出物理内存,就有可能频繁使用交换内存了,,,,调大page-cluster有优势,,,这是虚拟机环境性能优化的比较常用的方式,,,,,非虚拟机环境一般不要调大
如下图
zone_reclaim_mode 实现内存回收区域的模型,更倾向于回收哪一段的内存
1 = Zone reclaim on 打开内存区域回收的功能,至于怎么回收,是由内核来决定的,我们自己没法定义
2 = Zone reclaim write dirty pages out 回收写操作产生的脏页,把脏页同步到硬盘上就回收回来了
4 = Zone reclaim swaps pages 回收用于swap的页面???
这个用得也很少,,可以不用记,,因为我们现在基本上都使用64位系统了,考虑区域很多的场景很少见了,
如下图
匿名页,通常里面包含的不是文件的内容,(文件的内容打开后要放到 page cache当中)
匿名页的数据包含有:
Program data:程序(进程)自身所产生的数据,,如数组,堆当中的某一些数据等????,,,,,,
匿名内存区域,有些内存区域我们没法命名,不方便进行引用,
映射为进程自己私有页面的脏内存页
进程间通信的共享内存域页面 (事实上基于共享内存的进程间通信只是其中一种机制, 进程间通信可以基于信号来实现,) 只有两个进程需要交换数据的时候,才会用到共享内存的进程间通信
匿名页 = RSS-共享内存,,,,,匿名页一般不能被交换出去的,