Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106297
  • 博文数量: 76
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 400
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-18 21:41
文章分类

全部博文(76)

文章存档

2011年(76)

我的朋友

分类: LINUX

2011-08-24 17:29:41

2007-05-22, 04:22
top - 04:18:06 up 1 day, 19:30, 1 user, load average: 1.45, 1.83, 2.04
Tasks: 433 total, 3 running, 430 sleeping, 0 stopped, 0 zombie
Cpu0 : 6.2%us, 18.1%sy, 0.0%ni, 52.4%id, 0.0%wa, 1.0%hi, 22.2%si, 0.0%st
Cpu1 : 8.0%us, 22.1%sy, 0.0%ni, 50.9%id, 0.0%wa, 1.4%hi, 17.6%si, 0.0%st
Cpu2 : 0.3%us, 0.0%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni, 99.0%id, 1.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 0.0%us, 0.3%sy, 0.0%ni, 99.3%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.3%us, 0.3%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2075228k total, 900408k used, 1174820k free, 344508k buffers
Swap: 0k total, 0k used, 0k free, 326056k cached

intel xeon 5320 ,linux as5,
为什么我的应用,只能使用两个核,其他的核都在空闲?

和什么相关?内核还是程序?
babygreen
2007-05-22, 08:55
我感觉是跟程序有关, 每一个进程/线程, 在同一时刻毕竟只能在一个CPU里面执行. 所以在多核时代, 对程序员的要求也相应提高很多.
TiGER.zZ
2007-05-22, 09:21
你的进程还不够多,负载不够重,同时需要进行的任务不多
WaterMaker
2007-05-22, 09:36
Tasks: 433 total, 3 running, 430 sleeping, 0 stopped, 0 zombie


两个可能负载task,一个是top
hanfeng2000
2007-05-22, 11:06
有可能是这个问题.
CPU utilization is not balanced across all CPUs
-----------------------------------------------
CPU and DMA channel load may be unbalanced under the following conditions:
- The system is using Intel I/OAT, and
- There are multiple PCI Express LAN ports (both Intel I/OAT or
non-Intel I/OAT) in the system, and
- One or more of the PCI Express ports are not utilized or not enabled
for Intel I/OAT
WaterMaker
2007-05-22, 13:17
有可能是这个问题.
外设的中断可能会跟CPU有一个映射关系,不过这只能影响到interrupt handler。我感觉到softirq就可以调度到不同的CPU上了。

能不能描述一下具体的应用?
kualala
2007-05-22, 16:27
如果OS支持内核线程,多线程是可以利用到多处理器的,如果是用户线程,只能单处理器,因为内核不知道有多线程。线程在Unix里一直受到诟病,而且性能的提高也不明显,编程复杂度还大,因此不被看好。
hanfeng2000
2007-05-22, 18:25
外设的中断可能会跟CPU有一个映射关系,不过这只能影响到interrupt handler。我感觉到softirq就可以调度到不同的CPU上了。

能不能描述一下具体的应用?

应用是vpn。

irqbalance就是做中断分配的,已经运行了。

现有应用在老的服务器上是可以平均分配的,老服务器是两颗HT xeon。

新服务器是intel 5000芯片组,有ioatdma特征,除了板载Broadcom卡,又加了一块intel pt 双口网卡。intel pt网卡支持ioatdma,这可能是导致此问题的原因。

具体还要验证一下。
euph
2007-05-22, 20:18
如果OS支持内核线程,多线程是可以利用到多处理器的,如果是用户线程,只能单处理器,因为内核不知道有多线程。线程在Unix里一直受到诟病,而且性能的提高也不明显,编程复杂度还大,因此不被看好。

任何现代的*nix都支持内核线程
f_birds
2007-05-25, 12:49
有可能你的应用没有分配到那么多核来运行。。。
hanfeng2000
2007-05-25, 19:44
原因是一个网卡只能对应一个CPU,以前用的core数量太少,不知道这个概念。
tacoal
2007-05-26, 02:57
intel xeon 5320 ,linux as5,
为什么我的应用,只能使用两个核,其他的核都在空闲?

和什么相关?内核还是程序?

负荷多的时候也这样?

我觉得是负荷少的原因。就比如有10个人闲着,但一两个人就可以把现有的工作干完。在这种情况下,自然是分配给1,2个人合理,而不是均匀分配给每个人--均匀分配带来的开销会增大。这个和操作系统里的多任务是类似的。
euph
2007-05-26, 08:59
负荷多的时候也这样?

我觉得是负荷少的原因。就比如有10个人闲着,但一两个人就可以把现有的工作干完。在这种情况下,自然是分配给1,2个人合理,而不是均匀分配给每个人--均匀分配带来的开销会增大。这个和操作系统里的多任务是类似的。

对,2.6内核 跨cpu调度线程/进程 需要满足很多条件 否则调度带来的cache就很不划算
WaterMaker
2007-05-27, 10:40
里面是一个比较难搞的问题。也就是说操作系统要保证input的Packet顺序跟output的是同样的。这对TCP协议更是关键。比如TCP/IP协议栈的实现都回在发生乱序包的时候 shrink TCP Slide Window的大小,这对性能的影响是十分显著的。

Linux做这个的时候有一个假设,就是一个TCP connection中的packet不会通过多个物理设备上到达主机(即使是Multipath-Routing,对于TCP也都是通过per-connection/per-flow的方式)。通过这个假设,来做一个相对粗并行粒度的处理。

Linux里面有一个per-CPU structure: softnet_data,就是做为每一个CPU的queue,每一个H/W Interrupt上来,会raise对应CPU上的softirq level。在相应CPU的softirq(我前面回帖的说法有误)里面,将这个packet送到这个per-CPU的softnet_data里面,再通过softirq的tx/rx,对packet进行。而网卡的H/W IRQ也都会 aggregate 到唯一的一个CPU上去,所以才会出现这种情况。

也有更好的并行方法,一些专用的芯片可以做到这一点。比如Cavium的OCTEON多核处理器。
hanfeng2000
2007-05-27, 21:39
Packet Ordering在SMP系统里面是一个比较难搞的问题。也就是说操作系统要保证input的Packet顺序跟output的是同样的。这对TCP协议更是关键。比如TCP/IP协议栈的实现都回在发生乱序包的时候 shrink TCP Slide Window的大小,这对性能的影响是十分显著的。

Linux做这个的时候有一个假设,就是一个TCP connection中的packet不会通过多个物理设备上到达主机(即使是Multipath-Routing,对于TCP也都是通过per-connection/per-flow的方式)。通过这个假设,来做一个相对粗并行粒度的处理。

Linux里面有一个per-CPU structure: softnet_data,就是做为每一个CPU的queue,每一个H/W Interrupt上来,会raise对应CPU上的softirq level。在相应CPU的softirq(我前面回帖的说法有误)里面,将这个packet送到这个per-CPU的softnet_data里面,再通过softirq的tx/rx,对packet进行。而网卡的H/W IRQ也都会 aggregate 到唯一的一个CPU上去,所以才会出现这种情况。

也有更好的并行方法,一些专用的芯片可以做到这一点。比如Cavium的OCTEON多核处理器。

cavium也是芯片级解决方案吧?
查到了北京立华莱康平台科技有限公司有使用此芯片的产品,这产品的板子是这个公司设计的还是cavium还是inetsystem提供的?

cavium的框架和intel np芯片又有什么不同吗?那个性能更好,更稳定?

cavium或者inetsystem在国内有分公司吗?

谢谢阿,一下子提了这么多问题。
阅读(1108) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~