② 查看inode和目录项缓存
[28]slab是Linux操作系统的一种内存分配机制,slab分配算法采用cache存储内核对象。slab缓存、从缓存中分配和释放对象然后销毁缓存的过程必须要定义一个kmem_cache对象,然后对其进行初始化这个特定的缓存包含32字节的对象。可以通过运行cat /proc/slabinfo |grep -E '^#|dentry|inode'命令来查看所有目录项和各种文件系统索引节点的缓存情况。
# cat/proc/slabinfo | grep -E '^#|dentry|inode' # name <active_objs> <num_objs> <objsize> <objperslab><pagesperslab> : tunables <limit> <batchcount><sharedfactor> : slabdata <active_slabs> <num_slabs><sharedavail> btrfs_inode 0 0 1144 28 8 : tunables 0 0 0: slabdata 0 0 0 ufs_inode_cache 0 0 808 40 8 : tunables 0 0 0 : slabdata 0 0 0 qnx4_inode_cache 0 0 680 48 8 : tunables 0 0 0 : slabdata 0 0 0 hfs_inode_cache 0 0 832 39 8 : tunables 0 0 0 : slabdata 0 0 0 minix_inode_cache 0 0 672 48 8 : tunables 0 0 0 : slabdata 0 0 0 ntfs_big_inode_cache 0 0 960 34 8: tunables 0 0 0 : slabdata 0 0 0 ntfs_inode_cache 0 0 296 55 4 : tunables 0 0 0 : slabdata 0 0 0 xfs_inode 0 0 960 34 8 : tunables 0 0 0 : slabdata 0 0 0 mqueue_inode_cache 34 34 960 34 8 : tunables 0 0 0 : slabdata 1 1 0 fuse_inode 117 117 832 39 8 : tunables 0 0 0 : slabdata 3 3 0 ecryptfs_inode_cache 0 0 1024 32 8 : tunables 0 0 0 : slabdata 0 0 0 fat_inode_cache 0 0 744 44 8 : tunables 0 0 0 : slabdata 0 0 0 squashfs_inode_cache 22954 22954 704 46 8 : tunables 0 0 0 : slabdata 499 499 0 ext4_inode_cache 105930 105930 1088 30 8 : tunables 0 0 0 : slabdata 3531 3531 0 hugetlbfs_inode_cache 104 104 624 52 8 : tunables 0 0 0 : slabdata 2 2 0 sock_inode_cache 2313 2484 704 46 8 : tunables 0 0 0 : slabdata 54 54 0 shmem_inode_cache 1840 1840 712 46 8 : tunables 0 0 0 : slabdata 40 40 0 proc_inode_cache 7315 10944 680 48 8 : tunables 0 0 0 : slabdata 228 228 0 inode_cache 40236 40439 608 53 8 : tunables 0 0 0 : slabdata 763 763 0 dentry 214030 214242 192 42 2 : tunables 0 0 0: slabdata 5101 5101 0
其中dentry行表示目录项缓存,inode_cache行表示VFS索引节点缓存,而其他的是各种文件系统的索引节点缓存。除了使用slabinfo命令查看slab信息,也可以使用slabtop命令来查看。
# slabtop Active / Total Objects (% used) : 539715 / 542626 (99.5%) Active /Total Slabs (% used) : 11100 / 11100(100.0%) Active /Total Caches (% used) : 81 / 109(74.3%) Active /Total Size (% used) : 142659.64K /143801.37K (99.2%) Minimum /Average / Maximum Object : 0.01K / 0.26K / 8.00K OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHESIZE NAME 444405 4422740% 0.10K 11395 39 45580K buffer_head 155820 1444690% 0.19K 3710 42 29680K dentry 70230 691050% 1.06K 2341 30 74912K ext4_inode_cache 60900 60900100% 0.13K 1015 60 8120K kernfs_node_cache … 40439 40286 0% 0.59K 763 53 24416K inode_cache …
在这里,目录项(dentry)占用了29680K的Cache,inode(inode_cache)的Cache为24416K。
③ 查看进程的I/O
查看进程的I/O情况,使用pidstat -d参数。
#pidstat -d 1 Average: UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command Average: 0 331 0.00 0.57 0.00 2 jbd2/sda1-8 Average: 0 6353 0.00 3066.10 0.00 0 snapd
其中参数含义如下。
•UID/PID。
用户ID/进程ID。
•kB_rd/s。
每秒读取的数据大小,单位是 KB。
•kB_wr/s。
每秒写请求数据大小,单位是KB。
•kB_ccwr/s。
每秒取消的写请求数据大小,单位是 KB。
•块 I/O 延迟(iodelay)。
包括等待同步块 I/O 和换入块 I/O 结束的时间,单位是时钟周期。
④ 磁盘top工具
iotop命令是一个用来监视磁盘I/O使用状况的top类工具。使用iotop需要在unbutu下另行安装,命令为apt-get install iotop。图3-31为iotop的执行情况。
图3-31 iotop命令
扩展阅读:磁盘分类 按照存储介质来分,磁盘可以分为机械磁盘与固态磁盘。 •机械磁盘(Hard Disk Driver:HDD):机械磁盘是根据磁头寻道和盘片旋转而获取数据的,最小读写单位是扇区,每个扇区为512B。 •固态磁盘(Solid State Disk:SSD):固态磁盘采取“先擦除再写入”的原则,速度比机械抽盘快,但是会产生大量的垃圾。最小读写单位是页,通常大小是4KB、8KB等。 不管是机械磁盘还是固态磁盘,离散的数据读写比性能连续的要低。 按照接口来分类,可以把硬盘分为。 •IDE(Integrated Drive Electronics):前缀为hd。 •SCSI(Small Computer System Interface):前缀为sd。 •SAS(Serial Attached SCSI)。 •SATA(Serial ATA):前缀为sd。 •FC(Fibre Channel)。 多块同类型的磁盘,可以按照 a、b、c…的字母顺序来编号/dev/sda、/dev/sdb。还可以划分为不同的逻辑分区,每个分区再用数字进行编号。比如/dev/sda,可以分成/dev/sda1和/dev/sda2 2个分区。 另外也可以把多块磁盘组合成一个逻辑磁盘,构成冗余独立磁盘阵列,也就是 RAID(Redundant Array of Independent Disks),从而可以提高数据访问的性能,并且增强数据存储的可靠性。具体细节可以参考3.2.1-3里面的介绍。 |
顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!
投票已过期
1.以下你用过哪些集中配置管理系统?(多选)
- puppet
- Chef
- ansible
- saltstack
- Cfengine
- Capistrano
- Resque
- Rundeck
- Rundeck
- 其他
2.以下你用哪些过虚拟机或容器?(多选)
- VMware
- Vagrant
- Amazon EC2
- AMI(亚马逊云机器镜像)
- Vagrant
- Docker
- Rkt
- 裸金属服务器
- 其他
3.以下你用哪些操作系统自动化配置工具?(多选)
- Solaris10 JumpStart
- Kickstart
- Debian-Preseed
- 其他
4.以下你用哪些云平台?(多选)
- Amazon Web Services
- Google App Engine
- Windows Azure
- OpenShift
- Cloud Foundry
- AWS CloudFormation
- Microsoft Azure Stack
- OpenStack Heat
- 百度云
- 阿里云
- 腾讯云
- 其他
5.以下你用哪些CI/CD工具?(多选)
- Jenkins
- ThoughtWorks GoCD
- Atlassian Bamboo
- Microsoft Team Foundation Server
- TeamCity
- GitLab CI
- Travis CI
- SNAP CI
- Pivotal的Concourse
- Etsy的Morgue
- 其他
6.以下你用哪些管理工具?(多选)
- JIRA
- LeanKit
- Mingle
- 禅道
- 其他
7.以下你用哪些安全工具?(多选)
- Vault
- Keywhiz
- credstash
- Red October
- Metasploit
- OSSEC
- Tripwire
- Unhide
- OWASP ZAP Zed Attack Proxy Project
- Lynis
- The Browser Exploitation Framework
- OWASP Xenotix XSS Exploit Framework
- OWASP Offensive Testing Framework
- Brakeman
- WPScan
- nmap
- Burp Suite
- AWVS
- AppScan
- CSRFTester
- SQL Map
- Pangolin
- DirBuster
- 其他
8.以下你用哪些静态扫描工具?(多选)
- Sonar
- Brakeman
- Codeclimate
- CheckStyle
- 其他