`
youlong699
  • 浏览: 22660 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

load 与 cpu use

 
阅读更多
引自一个load 飙到20 (5核), 单cpu idle在80%多的case 。
木名-内核(09:52:24):
load是采集一个瞬间的运行进程和uninterruptible进程进行计算,cpu利用率是整个时间段的繁忙程度,不是很一样
木名-内核(09:53:41):
比如在1ms里面,有100us会有5个线程排队处理,其他900us没有,那么你看到的oad可能是5,但是cpu利用率只有10%

 

狄卢(09:57:51):
那load 分1分 5分 15分 三种值,让人感觉是平均值。但实际上,也是在1分钟之内采集若干个瞬间值做平均?

 

木名-内核(10:02:35):
是的,系统是每5s采集一次

 

木名-内核(10:04:13):
大部分情况下,load能够和cpu利用率符合,但是碰到一些特殊的情况,比如刚好每5s采集的时候运行进程很多,其他时间运行进程很少,这个时候load就会和cpu利用率有偏差

 

狄卢(10:05:25):
哦。。 那这样。。 你昨天看到就是这种进程经常波动的是吧? 进程数量波动从哪里能看处理呢 , 呵呵 我太菜了

 

木名-内核(10:05:53):
我看的是cat /proc/loadavg里面的
32内核有每个cpu的运行队列,18内核只有这个
0.63 0.77 0.75 1/422 16134

这个里面422前面的1就是当前系统的nr_running

 

狄卢(10:07:04):
哦, 这个是多长时间采集一次?

 

木名-内核(10:07:17):
这个是你可以即时的读取
当前读取时刻的

 

狄卢(10:07:52):
哦哦, 那top里展示的load 也是从这里面计算的?

 

木名-内核(10:09:10):
嗯,load是根据每次的nr_running + nr_uninterruptible的值进行计算的
这里只是nr_running的,碰到IO的,就需要结合其他的看了
 
另, 关于进程状态: http://www.361way.com/process-status/1798.html

linux系统最常用的命令莫过于ps,经常要用其查看linux的进程和线程情况。此文我们着重来看进程 。进程又分为以下几种状态:

1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

其对应在ps上的相应状态码如下:

状态 定义
R Running.运行中
S Interruptible Sleep.等待调用
D Uninterruptible Sleep.等待磁盘IO
T Stoped.暂停或者跟踪状态
X Dead.即将被撤销
Z Zombie.进程已经结束,仅映像名留存
W Paging.内存交换
N 优先级低的进程
< 优先级高的进程
s 进程的领导者
L 锁定状态
l 多线程状态
+ 前台进程

平时在查看linux进程状态时,查看最多的三个状态是R  S   D 

R状态,不必多说,R就是running的缩写,即运行中的进程。

S 即 sleep进程,休眠进程。其又分为两种:

  1. Interruptible Sleep(可中断睡眠,在ps命令中显示“S”)。处在这种睡眠状态的进程是可以通过给它发送signal来唤醒的,比如发HUP信号给nginx的master进程可以让nginx重新加载配置文件而不需要重新启动nginx进程;
  2. Uninterruptible Sleep(不可中断睡眠,在ps命令中显示“D”)。处在这种状态的进程不接受外来的任何signal,这也是为什么之前我无法用kill杀掉这些处于 D状态的进程,无论是“kill”, “kill -9”还是“kill -15”,因为它们压根儿就不受这些信号的支配。

D 即上面提到的Uninterruptible Sleep ,如果从广义上来分,D状态算是一种特殊的S状态进程。进程为什么会被置于D状态呢?

D 状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被ps看到了, 同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如NFS挂载的远程文件系统已经不可访问了。

 
正是因为得不到IO的响应,进程才进入了uninterruptible sleep状态,所以要想使进程从uninterruptible sleep状态恢复,就得使进程等待的IO恢复,比如如果是因为从远程挂载的NFS卷不可访问导致进程进入uninterruptible sleep状态的,那么可以通过恢复该NFS卷的连接来使进程的IO请求得到满足,除此之外,要想干掉处在D状态进程就只能重启整个Linux系统(D进程并不能通过kill 和kill -9 杀掉) 。
 
分享到:
评论

相关推荐

    How to use CPU frequency scaling

    - 使用`/etc/modules-load.d/cpufreq.conf`配置文件添加所需的模块名称。 - 使用`update-initramfs -u`更新initramfs。 - 重启系统使更改生效。 #### 5. 安装用户空间频率控制器 ##### 5.1 powernowd - **...

    组成原理cpu设计

    **组成原理CPU设计**:此标题指明了文章的主要研究对象是计算机CPU(中央处理器)的设计与组成原理。CPU作为计算机的核心部件,其设计涉及到诸多方面,包括但不限于硬件架构、指令集设计、时序控制等。 #### 二、...

    MRTG监视网络流量CPU内存硬盘

    YLegend[cpu]: CPULoad(%) ShortLegend[cpu]: % Legend1[cpu]: Privileged(system)CPU use in percent Legend2[cpu]: User(application)CPU use in percent LegendI[cpu]: CPU SYSTEM: LegendO[cpu]: CPU USER...

    verilog mips流水线cpu

    5. **解决Load-Use冒险**:在流水线中,Load-Use冒险发生在当一个指令依赖于前一条指令从内存加载的数据,但这两条指令在流水线的不同阶段。为解决这个问题,设计通常会包含数据转发机制,允许直接从内存阶段将数据...

    用VHDL写的CPU模型(极简单)

    从给定的VHDL代码片段来看,我们正在探索一个非常基础且简化的CPU模型的构建,主要聚焦于程序计数器(Program Counter, PC)和指令寄存器(Instruction Register, IR)的设计与实现。这不仅展示了VHDL语言在硬件描述...

    tensorflow基于cpu的检测

    label_map = label_map_util.load_labelmap('path/to/your/label_map.pbtxt') categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=90, use_display_name=True) category_...

    北航计算机组成Project5

    这包括但不限于加载/存储冲突(load-use和store-use)、数据 hazards(read-after-write, write-after-read)和控制流冲突(branch hazard)。编写这样的测试用例可以帮助验证你的CPU设计是否能正确处理这些潜在的...

    How to Use AWR reports to Diagnose Database Performance Issues

    “Load Profile”部分展示了数据库的资源使用情况,如逻辑读、物理读、重做日志写入等,这对于评估数据库的I/O压力非常有用。如果“Buffer busy waits”较高,可能表明存在缓冲区争用,需要检查数据块的并发访问情况...

    WinRing0帮助文档

    How to Use Common Put WinRing0.dll, WinRing0x64.dll, WinRing0.sys, WinRing0x64.sys, and WinRing0.vxd into the directory where your application's executable file resides. Visual C++ 2005/2008 See ...

    qemu-0.13.0(编译过全处理器支持)

    -S freeze CPU at startup (use 'c' to start execution) -gdb dev wait for gdb connection on 'dev' -s shorthand for -gdb tcp::1234 -d item1,... output log to /tmp/qemu.log (use -d ? for a list of log ...

    Qemu-1.0.1 for windows

    load SMBIOS entry from binary file -smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d] specify SMBIOS type 0 fields -smbios type=1[,manufacturer=str][,product=str][,version=str][,...

    Asynchronous Android Programming(PACKT,2ed,2016)

    In a more advanced phase, you will create background tasks that are able to execute CPU-intensive tasks in native code–making use of the Android NDK. You will be then guided through the process of ...

    WinRing.dll WinRing0 is a hardware access library for Windows.

    How to Use Common Put WinRing0.dll, WinRing0x64.dll, WinRing0.sys, WinRing0x64.sys, and WinRing0.vxd into the directory where your application's executable file resides. Visual C++ 2005/2008 See ...

    应用笔记LAT1402+TouchGFX中MCU+负载的计算过程介绍

    printf("Current CPU Load: %.2f%%\n", cpuLoad); } } ``` ### 3.4 性能优化建议 - **采样频率调整**:可以通过调整vApplicationIdleHook的调用频率来平衡负载计算精度与性能消耗之间的关系。 - **数据平滑处理*...

    oracle_hint

    在CBO模式下,优化器会考虑诸如CPU、内存消耗等代价因素,以及表和索引的统计信息。如果表没有统计信息或者统计信息过期,优化器可能会做出错误的决策。因此,定期运行ANALYZE命令更新统计信息至关重要。 优化模式...

    Bitsum.Process.Lasso.Pro v3.62.4 x32

    More advanced users can tweak the configuration, but you needn't touch anything to have it instantly improve your system responsiveness and prevent stalls in high load situations. * Process Lasso ...

    PPQI.jl:Julia版本PaddlePaddle快速推断

    add (url = " https://github.com/AgentMaker/PPQI.jl " )API参考load_config: function load_config ( modelpath :: String , use_gpu :: Bool = false , gpu_id :: Int = 0 , use_mkldnn :: Bool = false , cpu_...

    python调用matlab的方法记录(csdn)————程序.pdf

    当尝试在没有GPU的机器上加载模型时,如果没有正确指定位置,会报错`please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU`。要解决这个问题,只需在加载模型的代码中添加...

    计算机组成原理课程设计任务书 2019-2-18修订版1

    CPU需具备处理数据冒险、结构冒险、分支冒险的能力,能运行涵盖所有指令的测试程序,且能自动统计执行周期数、无条件分支指令数目、条件分支成功次数、插入气泡数目、load-use冲突次数,以及动态分支预测流水线的...

Global site tag (gtag.js) - Google Analytics