关于cpu的使用率问题。

wangxx777 2013-06-12 05:25:48
我有个问题想不明白
希望知道的人赐教一下
这个问题是关于cpu的
例如我10人并发响应时间为0.3s,cpu的利用率为10%
我的cpu相当于有90%的时间是空闲的
当我20人并发响应时间为0.5,cpu的利用率为30%
我这么做只是提高了cpu的使用率,但是为什么响应时间会增加呢?
...全文
560 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nongzhenqin 2013-08-28
  • 打赏
  • 举报
回复
其实现在电脑或者服务器最大的瓶颈是在硬盘等IO设备上,CPU并不是什么大问题。
  • 打赏
  • 举报
回复
CPU在多个线程中切换上下文;线程数量越多,切换所浪费的总时间就越多
引用 3 楼 fishjam 的回复:
楼上说的对,除了CPU,还有IO、MEM等都有影响。 而且当你的数据量小的时候测试出来值可能和理论值比较接近,但当数据量大到一定程度后,往往会因为一些你没有注意到的参数,而产生质变。
+1 线程多了,需要处理的东西也更多了。
soupwave 2013-06-26
  • 打赏
  • 举报
回复
线程越多,性能越差,这是必然的, 主要看你的每个线程作的是什么样的事情.....
Assassin_ 2013-06-26
  • 打赏
  • 举报
回复
10个人 与 20个人 的操作都相同的话.区别不会很大吧
MiceRice 2013-06-26
  • 打赏
  • 举报
回复
这个跟物理上学习的:理想变压器不损耗能量类似的。 实际运行受很多竞争资源调度影响,会导致相互等待而浪费时间,比如: 1、CPU在多个线程中切换上下文;线程数量越多,切换所浪费的总时间就越多; 2、硬盘按照每个线程的要求,依次为其读取/写入数据;注意到大量日志也是要磁盘IO的; 3、应用服务器接收来自Client端大量请求时,也需要依次为其分配Worker线程; 4、数据库还有各种读写锁,事务锁等等; 5、程序中还有大量的synchronized之类的同步操作。 所以,实际性能测试时,有个很重要的是对并发压力下的串行化程度来进行评估。
fishjam 2013-06-22
  • 打赏
  • 举报
回复
楼上说的对,除了CPU,还有IO、MEM等都有影响。 而且当你的数据量小的时候测试出来值可能和理论值比较接近,但当数据量大到一定程度后,往往会因为一些你没有注意到的参数,而产生质变。
金色海洋 2013-06-15
  • 打赏
  • 举报
回复
100个窗口卖火车票, 10个人去买票,都买到票用了0.3 还是100个窗口卖火车票, 这回是20个人一起去买票,需要的时间怎么是0.5了呢? 理论是理论,实际是实际。要探求原因?有好多好多。除了CPU之外,还有硬盘、内存等硬件原因,还有其他服务需求的影响。
商科程序员 2013-06-13
  • 打赏
  • 举报
回复
线程的切换和调度也是开销。 还有你这个测试取样太小,测试结果受系统当时状态影响较大。

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧