标签: cpu-usage

控制perl脚本的CPU利用率?

我根据Perl脚本多次迭代的标准进行了大量的文件搜索,似乎占用了100%的CPU时间.有没有办法控制我的脚本CPU利用率?我读到了一些关于在我的脚本中放入空睡眠周期的地方.但我不知道该怎么做.

perl cpu-usage

7
推荐指数
3
解决办法
1万
查看次数

我可以限制php脚本的最大CPU使用率吗?

我有一些使用大量CPU的脚本是否可以限制允许进程使用的CPU数量?顺便说一下,我在CentOs 5.5上运行.

php cpu-usage

7
推荐指数
2
解决办法
1万
查看次数

在App Engine上做一个大规模的db.delete,不用吃CPU

我们在Google App Engine上有一个相当大的数据库 - 只有超过50,000个实体 - 我们希望从中清除过时的数据.计划是编写一个延迟任务来迭代我们不再需要的实体,并批量删除它们.

一个复杂因素是我们的实体也有我们想要清除的子实体 - 没问题,我们想; 我们只是查询这些实体的数据存储区,并将其与父项同时删除:

query = ParentKind.all()
query.count(100)
query.filter('bar =', 'foo')
to_delete = []
for entity in enumerate(query):
    to_delete.append(entity)
    to_delete.extend(ChildKindA.all().ancestor(entity).fetch(100))
    to_delete.extend(ChildKindB.all().ancestor(entity).fetch(100))
db.delete(to_delete)
Run Code Online (Sandbox Code Playgroud)

我们限制自己一次删除100个ParentKind实体; 每个人ParentKind有大约40个孩子ChildKindAChildKindB实体 - 可能有4000个实体.

这在当时似乎是合理的,但是我们运行了一个批处理作为测试,结果查询运行了9秒 - 并且在可计算的CPU时间花费了1933 来访问数据存储区.

这似乎相当苛刻 - 每个实体0.5个可计费秒! - 但我们并不完全确定我们做错了什么.它只是批量的大小吗?祖先的查询特别慢吗?或者,删除(实际上,所有数据存储访问)只是作为糖蜜缓慢?

更新

我们将查询更改为keys_only,虽然这样可以将运行一个批处理的时间缩短到4.5个实际秒,但CPU时间仍然需要大约1900秒.

接下来,我们将Appstats安装到我们的应用程序(感谢,kevpie)并运行一个较小的批次 - 10个父实体,总计约450个实体.这是更新的代码:

query = ParentKind.all(keys_only=True)
query.count(10)
query.filter('bar =', 'foo')
to_delete = []
for entity in enumerate(query):
    to_delete.append(entity)
    to_delete.extend(ChildKindA.all(keys_only=True).ancestor(entity).fetch(100))
    to_delete.extend(ChildKindB.all(keys_only=True).ancestor(entity).fetch(100))
db.delete(to_delete) …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine bigtable cpu-usage

7
推荐指数
1
解决办法
1566
查看次数

MySQL:为什么DELETE比INSERT更加CPU密集?

我目前正在大学学习"性能评估"课程,我们现在正在做一项测试,我们正在测试PHP和MySQL数据库服务器上的CPU使用情况.我们使用httperf来创建自定义流量,使用vmstat来跟踪服务器负载.对于INSERT和DELETE(单独运行),我们正在运行3000个与PHP服务器的连接.

数字显示DELETE操作比INSERT更加占用CPU - 而我只是想知道为什么?

我最初认为INSERT需要更多的CPU使用,因为需要重新创建索引,需要将数据写入磁盘等等.但显然我错了,我想知道是否有人可以告诉我这方面的技术原因.

mysql cpu-usage sql-insert sql-delete

7
推荐指数
2
解决办法
1625
查看次数

在Linux中查找Thread的CPU使用情况

我有一个在Linux上运行的基于C的应用程序,有大约30个线程.现在我需要编写一个小实用程序,它在给定时间查找每个线程的CPU使用情况.它可以是应用程序的单独或部分.

/ proc的一个问题是找到哪个线程是什么.

请给我一些如何开始的想法.

谢谢

c linux pthreads cpu-usage

7
推荐指数
1
解决办法
1944
查看次数

top显示高用户空间CPU利用率,但所有进程显示0

关于为什么负载将通过屋顶,顶部的任何想法显示每个CPU用户空间利用率为85%或更高,但没有任何进程被标记为任何CPU利用率?

我第一次看到这个.我们有一台平均负载为20的服务器,每个CPU的故障都非常高(> 85%),但列表中没有任何进程具有任何 CPU%利用率.这是一个示例,是的,这是从最高到最低CPU利用率排序的进程 - 每次在蓝色月亮中我们实际上会看到一个显示"1"作为CPU%的进程.

这是一个mysql服务器盒.

top - 16:08:48 up 185 days, 15:27,  5 users,  load average: 20.60, 17.20, 13.17
Tasks: 221 total,   2 running, 219 sleeping,   0 stopped,   0 zombie
Cpu0  : 90.3%us,  5.8%sy,  0.0%ni,  3.2%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  : 89.1%us,  5.8%sy,  0.0%ni,  4.5%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 86.4%us,  5.0%sy,  0.9%ni,  6.9%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  : 88.1%us,  5.8%sy,  1.3%ni,  4.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  : 89.8%us,  7.2%sy,  0.0%ni, …
Run Code Online (Sandbox Code Playgroud)

linux cpu-usage

7
推荐指数
1
解决办法
4424
查看次数

尝试在Windows PC上禁用处理器空闲状态(C状态)

我需要阻止处理器进入空闲状态(非C0 C状态).不可否认,我对处理器C和P状态知之甚少,所以请耐心等待.我们使用来自第三方供应商的相机,偶尔会提供损坏的帧.供应商已确定当CPU进入空闲状态时,它会干扰火线上框架的传输.为了确认这一点,我在Windows 7 PC上使用了以下代码,实际上,禁用空闲状态解决了这个问题.

   //WIN7
const DWORD DISABLED = 1;
const DWORD ENABLED = 0;
GUID *scheme;
PowerGetActiveScheme(NULL, &scheme);
PowerWriteACValueIndex(NULL, scheme, &GUID_PROCESSOR_SETTINGS_SUBGROUP, &GUID_PROCESSOR_IDLE_DISABLE, DISABLED);
PowerSetActiveScheme(NULL, scheme);
Run Code Online (Sandbox Code Playgroud)

如果我跑我的应用程序并打开Windows permon并添加%C1时,%C2时间和%C3一次我看到他们都是零,当我禁用这些国家,当我让他们,我看到了相当多的时间中度过C3状态(这是在Dell Precision T3500四核PC上).

我还需要在XP上执行此操作,但这些调用在XP上不可用.所以我尝试执行以下操作来禁用空闲状态

  unsigned int ActPwrSch; 
DWORD currPolicy,newPolicy, curr1Policy,curr2Policy, new1Policy, new2Policy;
MACHINE_PROCESSOR_POWER_POLICY Policy; 
if(GetActivePwrScheme(&ActPwrSch)) 
{ 
    if(ReadProcessorPwrScheme(ActPwrSch,&Policy)) 
    { 
        printf("Read Power Scheme:\n"); 
        //if(Policy.ProcessorPolicyAc.DisableCStates!=0) 
        currPolicy = Policy.ProcessorPolicyAc.Policy[0].AllowPromotion;
        curr1Policy = Policy.ProcessorPolicyAc.Policy[1].AllowPromotion;
        curr2Policy = Policy.ProcessorPolicyAc.Policy[2].AllowPromotion;
        Policy.ProcessorPolicyAc.Policy[0].AllowPromotion = 0;
        Policy.ProcessorPolicyAc.Policy[1].AllowPromotion = 0;
        Policy.ProcessorPolicyAc.Policy[2].AllowPromotion = 0;
        newPolicy = Policy.ProcessorPolicyAc.Policy[0].AllowPromotion;

        if(WriteProcessorPwrScheme(ActPwrSch,&Policy)) 
        { 
            printf("WriteProcessorPwrScheme succeed\n"); 
            if(SetActivePwrScheme(ActPwrSch,0,0)) 
            { 
                printf("SetActivePwrScheme succeed!!\n");
            } 
        } …
Run Code Online (Sandbox Code Playgroud)

c++ windows cpu perfmon cpu-usage

7
推荐指数
1
解决办法
5877
查看次数

查找内存使用情况,CPU利用率,运行python脚本的执行时间

我正在使用python,并假设我有一些代码如下

example.py

import os, psutil
import MySQLdb as mdb

conn = mdb.connect(user='root', passwd='redhat', db='File_Data', host='localhost', charset="utf8")
file_path = "/home/local/user/Module/File_processing/part-file.txt"
p = psutil.Process(os.getpid())
cursor = conn.cursor()

for line in file_open:
    result = line.split('\t')
    query = "insert into PerformaceReport (campaignID, keywordID, keyword, avgPosition)"
    query += " VALUES (%s,%s,'%s',%s)%(result[0],result[1],result[2],result[3])"
    cursor.execute( query )
conn.commit()

print p.get_cpu_times()
print p.get_memory_percent()
Run Code Online (Sandbox Code Playgroud)

上面的代码从文本文件中读取数据并保存到数据库并且工作正常

我正在使用该命令运行该文件 python path/to/the/example.py

现在我要做的是找到/捕获以下三个值/信息

  1. execution timepython脚本(example.py)用于读取数据并将数据保存到数据库的总量
  2. CPU utilization当python脚本(example.py)运行(执行)时
  3. Memory usage当python脚本(example.py)运行(执行)时

我已经用Google搜索了很多,发现了一些信息, 在这里,这里这里 …

python memory cpu-usage execution-time

7
推荐指数
1
解决办法
1万
查看次数

为什么系统CPU时间(%sy)高?

我正在运行一个加载大文件的脚本.我在单核OpenSuSe服务器和四核PC中运行相同的脚本.正如我所预期的那样,它比服务器中的速度快得多.但是,脚本会降低服务器的速度,使其无法执行任何其他操作.

我的剧本是

for 100 iterations
Load saved data (about 10 mb)
Run Code Online (Sandbox Code Playgroud)

时间myscript(在PC中)

real    0m52.564s
user    0m51.768s
sys    0m0.524s
Run Code Online (Sandbox Code Playgroud)

时间myscript(在服务器中)

real    32m32.810s
user    4m37.677s
sys    12m51.524s
Run Code Online (Sandbox Code Playgroud)

我想知道为什么当我在服务器中运行代码时"sys"如此之高.我使用top命令检查内存和CPU使用情况.在此输入图像描述 似乎仍然有免费记忆,所以交换不是原因.%sy是如此之高,它可能是服务器速度的原因,但我不知道是什么导致%sy这么高.使用最高CPU百分比(99%)的过程是"myscript".屏幕截图中%wa为零,但有时会变得非常高(50%).

当脚本运行时,平均负载大于1,但从未见过高达2.

我还检查了我的光盘:

strt:~ # hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   16480 MB in  2.00 seconds = 8247.94 MB/sec
 Timing buffered disk reads:   20 MB in  3.44 seconds =   5.81 MB/sec

john@strt:~> df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       245G  102G  131G  44% /
udev            4.0G  152K  4.0G   1% /dev …
Run Code Online (Sandbox Code Playgroud)

linux opensuse cpu-usage linux-kernel

7
推荐指数
1
解决办法
2万
查看次数

如何诊断在Linux中咀嚼CPU的python进程

我在自动脚本中的某个点上的python进程开始在基于Linux的系统(Ubuntu)上咀嚼CPU.我正在尝试在GDB中调试此问题.我是GDB的新手.是否有任何GDB命令来提供有关哪个线程正在使用大多数cpu的信息.查看线程堆栈并不能真正解决这个问题.

在windows windbg世界中,命令'!runaway'确实给出了进程中每个线程消耗的时间信息.我们在这里有相同的命令吗?还有其他调试问题的建议吗?

linux gdb cpu-usage

7
推荐指数
2
解决办法
6154
查看次数