在最佳使用时,CPU 在 100% 的时间中都在工作。在单用户系统中更是这样,这里不需要共享 CPU。总的来说,如果 us + sy 时间低于 90%,则不认为该单用户系统 CPU 受限制。但是,如果在一个多用户系统中 us + sy时间超过 80%, 其中的进程将要花时间在运行队列中等待。响应时间和吞吐量会受损害。
要检查 CPU 是否是瓶颈,考虑 vmstat报告中的四个 cpu 列和两个 kthr (内核线程)列,也应该查看 faults 列。
cpu列 在该时间间隔内使用 CPU 时间的百分比细分。cpu 列如下: us参数 us 列显示了用户模式所消耗的 CPU 时间。一个 UNIX 进程可以在用户模式下执行,也可以在系统(内核)模式下执 行。当在用户模式下执行时,进程在它自己的应用程序代码中之行,不需要内核资源来进行计算、管理内存或设置变 量。 sy参数 sy 列详细显示了 CPU 在系统模式下执行一个线程所花时间的百分比。包括内核进程(kprocs )和其它需要访问内核资 源的进程所消耗的 CPU 资源。如果一个进程需要内核资源,它必须执行一个系统调用,并因此被切换到系统模式从 而可以使用该资源。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找指定的位置和读写数据,除非使 用内存映射文件。 id参数 id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待时间的百分比。如果没有线程可以执行(运行队列为空)系 统调度一个叫做 wait 的线程,也就是 idlekproc 。在一个对称多处理系统中,每个处理器都有一个 wait 线程可调 度。由 ps 命令(带有 -k 或 -g 0 选项)将它确定为 kproc 或 wait。如果报告中 ps 显示这个线程的总计时间高, 这表明存在显著的时期,没有其它线程在这个 CPU 上准备运行或等待执行。系统因此大部分时间或任务空闲和等待 新任务。 如果没有未决 I/O,所有用于等待的时间归入空闲时间中。在4.3.2版或更早的操作系统中,访问远程磁盘(安装 NFS 磁盘)被当作空闲时间(有少量 sy 时间来执行 NFS 请求),因为没有对本地磁盘的未决 I/O 请求。在 AIX 4.3.3 和 以后的系统中,NFS 通过缓冲区高速缓存,在这些例程中的等待被放入 wa 中统计。 wa参数 wa 列详细显示了有未决本地磁盘 I/O 时 CPU 空闲的时间百分比(在 AIX 4.3.3 和以后版本的系统中,对安装了 NFS 的磁盘也是这样)。如果当等待正在运行时至少有一个未完成的磁盘 I/O,该时间归入等待 I/O 的时间。除非 该进程使用异步 I/O,否则对磁盘的 I/O 请求使调用线程被阻塞(或睡眠)直到请求被完成。一旦进程的 I/O 请求 完成,该进程被放入运行队列中。如果 I/O 很快完成,该进程可以使用更多的 CPU 时间。 wa 的值如果超过 25%,就表明磁盘子系统可能没有被正确平衡,或者这也可能是磁盘工作负荷很重的结果。