加载具有2个CPU的服务器

时间:2013-10-23 14:42:13

标签: batch-file cpu-usage

我有一台带2 * CPU的服务器。当我在服务器上运行下面的代码时,它给出了两个CPU LoadPercentage值:

@echo off
setlocal enabledelayedexpansion

(For /F "tokens=1,* delims==" %%A in ('"wmic cpu get LoadPercentage  /value  |find "P" "') do (
set "line=%%A %%B"
set "line=!line:~0,-1!"
echo !line!
))>output.txt

output.txt的:

LoadPercentage 2
LoadPercentage 4

在任务管理器的服务器上 - >性能时,它只显示一个值(显然,服务器为1)。 当CPU为2时,这个值是如何显示的?这是两个人的平均值吗?如何使用批处理获得单个CPU负载百分比值?

2 个答案:

答案 0 :(得分:1)

是的,它是负载总和除以处理器数量。

for循环中,当您获得负载时,将它们相加并计算cpus的数量。在for退出时,set /a average=...会给出答案。

编辑(通过OP自己的回答)

@echo off
    setlocal enableextensions enabledelayedexpansion

    rem Initialize variables
    set sum=0
    set num=0

    rem Iterate over wmic output 
    for /f "tokens=2 delims==" %%1 in ('wmic cpu get LoadPercentage /value ^|find "P" ') do (
        set /a sum=!sum!+%%1
        set /a num=!num!+1
    )

    rem test if we get any data
    if %num% gtr 0 (
        set /a avg=%sum%/%num%
    ) else (
        set avg=0
    )

    echo CPULoadPercentage %avg% > output.txt

    exit /b

答案 1 :(得分:0)

这里......工作..

@echo off
setlocal enabledelayedexpansion
set sum=0
(for /f "tokens=1-2* delims==" %%1 in ('"wmic cpu get LoadPercentage  /value  |find "P" "') do (
set /a sum=!sum!+%%2
)
set /a avg=!sum!/2
echo CPULoadPercentage !avg!
)>output.txt
exit /b