Linux2.6对新型CPU快速系统调用的支持

http://tech.ddvip.com   2006年11月20日    社区交流

本文详细介绍Linux2.6对新型CPU快速系统调用的支持

  不同系统调用方式的性能比较:

  下面是一些来自互联网的有关 sysenter/sysexit 指令和 INT n/IRET 指令在 Intel Pentium CPU 上的性能对比:

  表1:系统调用性能测试 测试硬件:Intel? Pentium? III CPU, 450 MHz Processor Family: 6 Model: 7 Stepping: 2

用户模式花费的时间   核心模式花费的时间 
基于sysenter/sysexit指令的系统调用  9.833 microseconds   6.833 microseconds 
基于中断 INT n 指令的系统调用    17.500 microseconds  7.000 microseconds
数据来源:[1] 数据来源:[2]

  表2:各种 CPU 上 INT 0x80 和 SYSENTER 执行速度的比较

CPU            Int0x80     sysenter 
Athlon XP 1600+      277       169 
800MHz mode 1 athlon    279       170 
2.8GHz p4 northwood ht   1152       442

  上述数据为对 100000 次 getppid() 系统调用所花费的 CPU 时钟周期取的平均值数据来源[3]。

  自这种技术推出之后,人们一直在考虑在 Linux 中加入对这种指令的支持,在 Kernel.org 的邮件列表中,主题为 "Intel P6 vs P7 system call performance" 的大量邮件讨论了采用这种指令的必要性,邮件中列举的理由主要是 Intel 在 Pentium 4 的设计上存在问题,造成 Pentium 4 使用中断方式执行的系统调用比 Pentium 3 以及 AMD Athlon 所耗费的 CPU 时钟周期多上 5~10 倍。因此,在 Pentium 4 平台上,通过 sysenter/sysexit 指令来执行系统调用已经是刻不容缓的需求。

责编:豆豆技术应用

正在加载评论...