性能之巅读后记

1.dtrace提供动态追踪技术
2.mpstat -P -ALL 1 以1s间隔输出所有cpu的当前状态,包括用户态使用时间、内核态使用时间、iowait比例、idle、irq硬件中断耗时、soft软件中断耗时
3.vmstat
a.查看系统内存状态
procs/r 运行队列的进程数+等待运行的进程数 procs/b 等待io的进程数量
memory/swpd 交换区 memory/free 空闲内存 /memory/buff 缓冲区内存大小 memory/cache 缓存大小
swap/si 每秒从交换区写到内存的大小,由磁盘调入内存 swap/so 每秒写入交换区的内存大小,由内存调入磁盘
IO/bi 每秒读取的磁盘块数
IO/bo 每秒写入磁盘的块数
b.cpu状态
c.磁盘读写 vmstat -d
4.CPU stall 是指cpu停止状态,可能是资源竞争、读内存、数据依赖等原因造成处理器流水线停顿
可以通过perf stat -a – sleep 10 查看10s中CPU的运行状态,其中关键指数为IPC,利用率应该为IPC / cpu核数 * 100%,即4核cpu ipc为3的话,利用率达到了75%
5.sar -B 1 以1s间隔输出内存状态 可以通过此命令来查看详细的内存性能状况
pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgstreal/s vmeff
页面换入 页面换出 严重及轻微缺页 严重缺页 页面加入空闲列表
页面换入可能是从以映射的主存中换入 此为轻微缺页,也可能之前该内存已经交换到磁盘现在从磁盘中换入 此为严重缺页;
6.匿名换页 文件系统换页
匿名换页是指没有映射到文件的存进行换页,指的是进程的私有数据:进程堆、栈,swap会将这些内存映射到swap文件
文件系统换页 是指读写被映射到内存的文件页换入、换出;换入是要从硬盘读取文件到内存的page cache,换出时候要看这个page cache是否是dirty的,如果dirty需要写回磁盘(将此任务提交到io队列中去,等待IO调度策略Merge请求和刷到磁盘);如果非dirty则可以直接释放。该过程是由内核线程pdflush不断去检查page cache的脏页去做的(1.脏页比例达到阈值 2.脏页的生存时间超过阈值);
7.INode节点是文件系统的meta信息,存储了文件的群贤、时间戳、数据指针等
8.文件io要经过多个cache,用户程序调用libc的write将用户程序的数据拷贝到libc的缓存中,当缓存达到一定数值或者关闭打开的文件时候才会调用系统调用write,系统调用write将用户态的数据拷贝到内核态中的page cache中,然后返回用户空间。因此write是个异步的操作,什么时候写磁盘是由内核pdflush线程不停的去扫描page cache中脏页的比例是否达到阈值或者脏页存在的时间是否超限,如果达到条件则将任务塞入到io队列中,内核中的io调度队列根据策略进行请求merge、排序并决定何时写入磁盘。而read操作则是一个同步的过程,读内核的page cache如果没有数据,则要读磁盘获取数据。
文件系统也提供了绕过这些cache的方法,通过mmap page cache到用户态,使写操作可以达到零拷贝。通过open时候带上O_DIRECT标记,使得进行raw写入,可以绕开文件系统直接作用于磁盘。还可以raw写入,直接作用于磁盘扇区。
用户直接调用sync则可以直接将dirty的page cache塞入io队列,其作用是唤醒pdflush线程,并使其工作。
9.free 命令可以看到cache/buffer两个指标,cache指的是page cache是文件系统的缓存,buffer是buffer cache是指绕过文件系统直接写磁盘块的缓存。
10.iostat -x 1 查看磁盘的扩展信息 可以看到tps—每秒的事务数(iops) 每秒读取字节数、每秒写入字节数、io利用率 io等待时间、平均请求的数据大小(单位为扇区)
iotop 可以分进程的对io进行展示
11.syn攻击可以使用防火墙、加固tcp/ip协议栈如调整最大半连接数,缩短超时时间、增加backlog队列,限制syn并发等
12.netstat -i 查看接口状态,成功的包数、错误的包数、丢包数、超限数,评估网路情况
13.traceroute www.xxx.com 可以看到本机到该网址的路由
14.tcpdump -i eth4 -w /xxx.dump 可以抓到某个网口的数据包,https的解析不了
15.进程间通信 可以使用管道、有名管道、信号量、共享内存、网络套接字、通过文件锁达到同步;信号量为多个进程去争抢的资源,信号量如果count为1,则类似于互斥锁,如果不唯一则可以被多个进程获取,未获取的进程则被内核挂起到等待队列,信号量值不为0时候唤醒等待队列中的进程。多个进程间可以通过共享内存(mmap) + 互斥锁来进行同步,其中互斥锁需要通过pthread_mutex_attr设置共享属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值