欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 49_01 _Linux内存子系统及常用调优参数 有大用

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),,

如下图

image.png


这是在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 ~]#

下图,是马哥的

image.png


启用大页面

如下图  第一种方法# vim /etc/sysctl.conf   vm.nr_hugepage = n (virtual memeory number huage page 为几个)  手动指定的话,使用# sysctl -w 来指定

            第二种方法 操作系统启动的时候,向内核传递 hugepages = n ,表示启用几个大页面

image.png


[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所执行的系统调用了,

image.png



[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,                #当前进程没有接收任何请求,当接收请求后很有可能产生系统调用,?如果用户请求了一个页面文件,意味着当前系统要打开这个页面文件,要跟硬件打交道,所以要实现系统调用的


下面是马哥显示的,不一样嘛

image.png


另开一个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,

image.png



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,

image.png



如下图

假如,这是slab 缓存,里面包含了很多内存页面,页面分为三类,,,,,,,,,,页面里面再次划分小对象,存满了小对象(数据)的页面我们称为slab_full,,,,,,,, 使用了一部分(未存满的)称为slab_partial,,,,,,,,,,已经分配好了,但尚未启用的,叫slab_empty,,,,,,,,slab_empty里面有好多个页面,slab_full里面有好多个页面,slab_partial里面有好多个页面,,,为什么是好多个,而不是一个,(slab_partial里面 可能有n个页面,第一个页面存的是10bytes,第一个没存满,,第二个页面存的是15bytes,第二个没存满,,,所以说有好多个)

image.png




[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的性能,,,,,,,其实每一个用户会话建立以后,都要占据内存空间的,以实现将用户的会话存储下来并进行追踪

image.png



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性能比较差了,,可以将它调小一点,,,,因为这段空间是无法被其它人使用的

image.png


如下图

内存由两部分组成,一部分物理内存,一部分交换内存,电脑上有好多进程,比较一进程打开一文件,就需要申请新的内存空间来使用,,,如果运行了多个进程,而内存比较少,上来就用满了内存,这时候某一个内存需要申请内存空间的时候,,,内存耗尽,系统会崩溃的,,,,,所以内存不够用时,将内存放到swap上,,,,min_free_kbytes就是定义最少要空闲多少空间以便某些进程随时使用的,,,,,,,这个时候,如果有进程需要申请新的空间了,内存不够用了,必须要交换一些内存到swap,

image.png



如下图

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现象产生了,我们要杀死哪个进程,)(杀死哪个进程,通常是根据这个进程多么像坏蛋的方式来杀死的,,,,它有个评分,每个进程都有个评分,几份像坏蛋的评分)

image.png


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,

image.png


#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

image.png



[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 清空某个设备上所记录的所有缓存条目

image.png


如下图

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秒钟

image.png


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 分区上面的(如果没有写到磁盘上去的话)

image.png


如下图,

如何调整 page cache,

        vm.lowmem_reserve_ratio        #内存很低时?????,我们预留的比率,,为page cache预留的空间

        vm.vfs_cache_pressure

        vm.page-cluster

        vm.zone_reclaim_mode

image.png


如下图,

vm.lowmem_reserve_ratio    

     low memory 指的是第一段内存,zoom normal和 zoom dna 那一段????在第一段内存里面,我们预留多少空间,,,当然在64位系统上这个参数不用调了,,马哥不讲了

image.png


如下图,

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对象

这些参数很多时候是不需要调整的,只有在某些极端场景下才需要调整

image.png


如下图

页组,页簇 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有优势,,,这是虚拟机环境性能优化的比较常用的方式,,,,,非虚拟机环境一般不要调大

image.png



如下图

zone_reclaim_mode   实现内存回收区域的模型,更倾向于回收哪一段的内存

1 = Zone reclaim on 打开内存区域回收的功能,至于怎么回收,是由内核来决定的,我们自己没法定义

2 = Zone reclaim write dirty pages out 回收写操作产生的脏页,把脏页同步到硬盘上就回收回来了

4 = Zone reclaim swaps pages 回收用于swap的页面???

这个用得也很少,,可以不用记,,因为我们现在基本上都使用64位系统了,考虑区域很多的场景很少见了,

image.png


如下图

匿名页,通常里面包含的不是文件的内容,(文件的内容打开后要放到 page cache当中)

匿名页的数据包含有:

    Program data:程序(进程)自身所产生的数据,,如数组,堆当中的某一些数据等????,,,,,,

    匿名内存区域,有些内存区域我们没法命名,不方便进行引用,

    映射为进程自己私有页面的脏内存页

    进程间通信的共享内存域页面            (事实上基于共享内存的进程间通信只是其中一种机制, 进程间通信可以基于信号来实现,)  只有两个进程需要交换数据的时候,才会用到共享内存的进程间通信



匿名页 = RSS-共享内存,,,,,匿名页一般不能被交换出去的,


image.png

普通分类: