[知其然不知其所以然-11] turbo功能如果没有在所有的cpu上都使能会怎么样?
2015-11-26 11:57
323 查看
最近我们在bugzilla上遇到一个跟cpu不同策略设置相关的问题:
https://bugzilla.kernel.org/show_bug.cgi?id=107821
我们发现系统的sysfs no_turbo字段,一会是1,一会是0,
原因就是因为出问题的环境是numa,no_turbo的值是MSR misc_enable(0x1a0)寄存器,
而通过rdmsr读到的值,可能是在不同的numa节点(misc_enable寄存器是package内共享的,
而numa节点可能跨package),因此就读到不同package上的寄存器值了,这就是问题
所在:intel_pstate驱动缺乏对每个cpu的处理,复现方法也很简单:
除了这个问题,intel_pstate还有几个问题:
1. There is no need to run the timer if it is in performance mode
2. misc_enable might be different on different packages
3. how to show the cpu min/max if HWP is enabled
4. pstate scaling when clock modulation is enabled
5. 在非hwp模式下,cpuinfo_cur_freq和cpuinfo_max_freq差了100Mhz
https://bugzilla.kernel.org/show_bug.cgi?id=107821
我们发现系统的sysfs no_turbo字段,一会是1,一会是0,
原因就是因为出问题的环境是numa,no_turbo的值是MSR misc_enable(0x1a0)寄存器,
而通过rdmsr读到的值,可能是在不同的numa节点(misc_enable寄存器是package内共享的,
而numa节点可能跨package),因此就读到不同package上的寄存器值了,这就是问题
所在:intel_pstate驱动缺乏对每个cpu的处理,复现方法也很简单:
# for i in $(seq 0 31); do numactl -C $i cat > /sys/devices/system/cpu/intel_pstate/no_turbo ; done > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 0 > 0 > 0 > 0 > 0 > 0 > 0 > 0 > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 1 > 0 > 0 > 0 > 0 > 0 > 0 > 0 > 0
除了这个问题,intel_pstate还有几个问题:
1. There is no need to run the timer if it is in performance mode
2. misc_enable might be different on different packages
3. how to show the cpu min/max if HWP is enabled
4. pstate scaling when clock modulation is enabled
5. 在非hwp模式下,cpuinfo_cur_freq和cpuinfo_max_freq差了100Mhz
相关文章推荐
- Android屏幕适配全攻略(最权威的官方适配指导)
- sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件
- SimpleAdapter真不简单!
- C语言中简单的循环
- springMVC 一些文章
- Oracle索引
- 实现带快速导航的ListView(自定义View和自定义ViewGroup的结合),可直接使用和修改使用
- Abp Application级别的生命周期
- REST API权限集成设计
- 错误处理try-catch,异常抛出throws、throw
- 不是为了你而演奏
- php7在 windows环境下部署
- 把PPT放入浏览器中——12款用于演示的JS库
- C++11中值得关注的几大变化
- WCF svcutil工具
- FileOutputStream
- VSFTP 服务器配置
- 类似popwindow的dialog
- Linux编译动态链接库
- dplyr学习笔记