当前位置: 首页 > Linux

Linux-ps那些用法

时间:2023-04-06 23:20:42 Linux

ps查看进程,记录ps命令在各种场景下的使用查看内存分配的majorminorfault命令ps-omajflt,minflt-Cprogrammajflt代表majorpagefaultminflt代表minorpagefault这两个数值表示自一个进程启动以来发生的pagefault中断的次数。当一个进程发生缺页中断时,该进程将进入内核态并执行以下操作:  1。检查要访问的虚拟地址是否合法  2、找到/分配一个物理页  3、填充物理页的内容(读取磁盘,或者直接置0,或者什么都不做)  4、建立映射关系(虚拟地址到物理地址)  5、重新执行导致页面错误的指令。如果第三步需要读盘,那么pagefault就是majflt,否则就是minflt。换句话说,minorpagefault是指CPU要执行的指令其实已经在物理内存页中了,只是这个页没有分配给当前进程,那么CPU就会抛出一个minorpagefault,让MMU此页分配给当前进程,因此minorpagefault不需要访问磁盘。brk和 mmap在标准C库中提供了malloc/free函数来分配和释放内存。这两个函数的底层是brk、mmap、munmap这几个系统调用来实现的。brk 将数据段的最高指针推到更高的位置。mmap是在进程的虚拟地址空间(堆和栈之间,称为文件映射区)找一块空闲的虚拟内存。brk(sbrk)性能损失较小;mmap有比较大的性能损耗。mmap没有内存碎片(与物理页对齐,整个页被映射释放);brk(sbrk)可能有内存碎片(由于new和delete顺序不同,可能有空洞,也称为碎片)brk(sbrk)或mmap调用分配的内存是否是虚拟空间的内存,只有当第一次访问分配的虚拟地址空间时,发生页面错误中断,操作系统负责分配物理内存,然后建立虚拟内存和物理内存之间的映射关系。典型例子1,内核CPU使用率高, 用户CPU使用率比较低  在请求中,分配内存,并在请求结束时释放内存。 我发现minor的增量很高,因为每次请求都有一个pagefault中断。如果访问压力大,每秒中断次数相当多,而且minor是在内核中处理的,所以内核的CPU占用率会很高