• 读懂Windows的系统信息


    奇怪,在我的电脑上第一次打开Visual Studio 2010要8秒左右,而关掉后再次打开,则只要2秒左右, 这是为什么?

    好吧,你肯定知道是Windows在背后搞的鬼,你甚至知道我们分别把他们叫做冷启动(cold start)和热启动(warm start), 可是Windows到底做了什么而产生如此大的区别呢?

    任务管理器几乎每天都在用,可是其"性能"那一页的内容未必全看的懂;Process explorer也常在看,可是其系统信息(system information)那个框框里的东西却未必认得全。花了些时间把这些概念理了理,总结一下。相信看完这些,对刚才那个问题会有比较清晰的解答。

    image

    虽然这个对话框名字为"系统信息",但其主要包含的还是系统的一些性能参数,如内存,CPU, I/O之类的。从上到下,从左到右一共10大类,我们一个一个加以解读吧。

    1. CPU Usage
      CPU总使用率。在右边CPU Usage History中可以看到其使用历史,我们可以注意到有两条线:红的那条量比较小的是内核的使用率,而绿色的则表示总的使用率。如果你的系统时不时的卡一下,通过查看每个进程的使用率又因为太快而捕捉不到,看看历史,把鼠标移到之前某个波峰上,就会跳出个tooltip,谁在捣鬼自然一目了然。
      当然,如果是多核的机器,可以把最下面那个"Show one graph per CPU"勾上查看单个核的使用情况。

    2. Commit
      虚拟内存的"认可用量"。这是任务管理器的翻译。如果我们把在物理内存中的所有可交换到pagefile的内容强制交换出去,此时pagefile中总的内容,就是Commit的大小。这就是为什么任务管理器也把Commit称为Page File使用率(page file的有效内容/page file文件大小)的原因。对于当前系统来讲,其大小为已经写到page file上的内容,加上还在物理内存中的可以写到page file中去的内容。
      "Commit"或者"认可用量"这个名字听起来不是很直观,但我们知道有个叫VirtualAlloc的API分配内存的时候,我们可以指定内存的类型,常用的两种是MEM_COMMIT和MEM_RESERVE, 我们看出来这里Commit其实就是指以MEM_COMMIT的方式分配的内存。
      会被交换到pagefile的内存包括private bytes, paged pool等,不会被交换到page file的内存包括内存映射文件(他们会被交换到对应可执行文件)和nonpaged pool或者系统内核,驱动(常驻内存)。
       
    3. I/O Bytes
      系统的输入输出情况。包括文件、网络和设备(鼠标、键盘等)的活动。读写文件是最常见的一种I/O。右边历史窗口中,蓝色的表示读写的总量,而粉红色的表示写的量。和CPU的使用率一样,我们可以对之前哪些进程进行了大量读写一目了然。一般情况下,粉红的那条线是"贴地而行"的,但你可以通过copy-paste上百兆的文件(avi或者rmvb等)观察到粉红线的突然上升。

    4. Physical
      物理内存使用量。

    5. Totals
      系统中句柄,线程,进程的总数量。
      这里句柄(Handle)是指向操作系统的一个引用,如HWND,HMENU,HDC等等。你可以把其简单的看成指向系统的某块内存,当然,实际情况会比这个复杂

    6. Commit Charge(k)
      这个就是第二项所介绍的Commit,只不过除了实时的认可用量,还提供了更多的关于Commit Charge的信息:。

      Current: 当前的Commit Charge大小
      Limit: Commit Charge的最大可能值,一般为:页面文件大小 + 物理内存大小 - 常驻物理内存的内容(nonpaged pool, system core等等)
      Peak: 自系统启动以来有过的最大的Commit Charge大小。
      Peak/Limit,Current/Limit两个数据的意义不言自明,当Current/Limit的值接近100%时,你的系统就会非常非常的慢。
      这个概念在Wiki上也有很不错的解释:Commit Charge.

    7. Physical memory(k)
      物理内存的使用情况。

      Total:总物理内存量
      Available:可用物理内存,包括free page list, zero page list和standby page list,在第四项看到的物理内存使用量,加上这里的可用物理内存,自然就是总物理内存量。
      System Cache:包括Cache Bytes(System's working set)和standby page list.

      Standby page list是可用物理内存,当free page list和zero page list用完后,就会开始破坏cache使用它。Standby page list同时也是cache,它是磁盘内容在物理内存的缓存,当再次访问到该内容时,可以从物理内存cache中直接拿到从而避免了读取磁盘。

    8. Kernel Memory(k)
      内核内存。内核下使用的内存包含两个非常重要的概念:paged pool和nonpaged pool。内核分配内存就是通过这两个内存池的。正如其名字所表示的,paged pool上的内存是可以被交换到page file的,而nonpaged pool上的内存是常驻物理内存的,是永远也不会被交换到pagefile上去的。

      Paged Physical: paged pool所分配的内存在物理内存上大小。
      Paged Virtual: paged pool所分配的总内存大小。
      Paged Limit:paged pool的最大值,在注册表中可以设置。
      Nonpaged: nonpaged pool上所分配的内存的大小,也就是物理内存的大小。
      Nonpaged Limit:nonpaged pool的最大值,在注册表中可以设置。
      这里page limit和nonpaged limit的内容需要设置系统符号文件才能正确显示:Option|Configure Symbols.

    9. Paging
      这里的paging不光指系统的page file,还包括memory mapped file,一般为exe,dll文件。当系统需要时,commit的内存会被交换到page file,而代码所占的内存则会被交换到其对应的可执行文件本身。当然,如果你的dll被rebase过,也就是被修改过了,触发了copy on write,会产生一份新的内容并也会被交换到pagefile上去。

      Page Fault Delta:每秒所发生的page fault的总次数,page fault是指访问的虚拟内存页不在进程的工作集中,需要从内存的standby list去拿,或者从磁盘load进来,前者为soft page fault, 后者为则hard page fault,耗时较长。
      Page Read Delta:每秒从磁盘读入的page数量。
      Paging File Write Delta:每秒写入到page file的page数
      Mapped File Write Delta:每秒写入到mapped file的page数,如exe,dll等。

      当系统物理内存不够用时,这些数据会变得很大,这是一个系统thrash的信号。

    10. CPU and I/O
      Context Switch Delta: 每秒钟线程context switch的次数。
      I/O Read Delta: 每秒的输入数,I/O包括磁盘,网络,设备等的输入输出。
      I/O Write Delta: 每秒的输出数,
      I/O Other Delta: 不包括数据的I/O操作,如控制操作的速率。
    11. copy-paste一个500M左右的.rmvb或者.avi,就能明显的观察到read delta和write delta的变化。

    那么现在,对本文开始提出的那个问题就比较清晰了:

    image

    注意:

    很多术语名词,如private bytes, paged pool之类的,都可以在performance monitor中看到说明。

  • 相关阅读:
    git命令 高级 【重要】
    【转载】webstorm-前端javascript开发神器中文教程和技巧分享
    eclipse 快捷键
    eclipse代码自动提示
    openstack 环境搭建
    python+Eclipse+pydev环境搭建
    【转载】CSS + DIV 实现局部布局
    【转载】CSS + DIV 实现整理布局
    CSS 标签实例二
    CSS 标签实例一 homepage.css
  • 原文地址:https://www.cnblogs.com/baiyanhuang/p/1730713.html
Copyright © 2020-2023  润新知