免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5112 | 回复: 32
打印 上一主题 下一主题

[内存管理] 2.6.18 PageCache分配速度太慢?? 求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-07 10:16 |只看该作者 |倒序浏览
机器的配置如下:
=======================================
4个CPU节点, 24个计算单元,超线程为48个cpu, 1.8GHZ
内存256G
一个巨牛逼的SSD卡,顺序读2G,顺序写1G,随机读1-2G,随机写1G(你没看错)
内核版本 rhel5u2 (2.6.18-92)
=======================================
现有问题如下:
用directIO时:
dd if=/dev/zero of=test.date oflag=direct bs=1M count=10240    # 写10G文件 directIO
顺序写速度可达1G, cpu无压力

走pagecache时
dd if=/dev/zero of=test.date bs=1M count=10240                      # 写10G文件 pagecache
速度500M, cpu 100%,几乎全在sys态

仔细观察了下,此时瓶颈在 pagecache分配内存时,
用 watch -n1 " awk 'BEGIN{X}/free/{X+= \$3}END{print X}'  /proc/zoneinfo " 观察内存
发现每秒也就分配个500M左右

结合 1) cpu 100% ;2) 几乎全在sys态; 3) zoneinfo free中下降的速度,推测出pagecache(写时)分配速度比较慢
只有SSD卡顺序写速度的一半

同样的测试又应用到顺序读上, pagecache分配速度变为1G, 但依然只有SSD卡顺序读速度的一半

然后怀疑是单线程pagecache分配比较慢
于是开了3个dd , 用 numactl  分别定到三个不同的cpu上,
速度反而更慢了,难道有全局锁?

以前没用过这么快的SSD存储设备,从来没感受到过内存是瓶颈,因此很奇怪
不晓得是内核版本问题,还是配置问题,不知道各位有没有遇到?
另外,同样的测试在同样机器配置的 6u3下也做了, 结果也类似。

论坛徽章:
0
2 [报告]
发表于 2014-03-07 12:15 |只看该作者
自己顶一下,别沉了

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
3 [报告]
发表于 2014-03-07 12:35 |只看该作者
除了软件原因外,估计还跟你的内存硬件的读写速度有关,建议用lmbench之类的工具测试下内存读写速度。
另外,可能也跟numa相关,低版本内核对numa支持可能也不够好,可能存在远程节点访问效率的问题。
如果怀疑软件问题,可以将内核升级再试试。
另外,多线程效率更低是说3个进程的总的速度还不抵单进程的情况么?感觉可能跟超线程相关,对于内存访问密集型的应用,超线程(由于共享cache)的性能也不好。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
4 [报告]
发表于 2014-03-07 13:20 |只看该作者
回复 1# lovegq
这个内核版本有点低了啊。建议改成高版本内核试试吧,用这么低的内核出了问题也很少有人愿意翻老代码帮你定位的

   

论坛徽章:
0
5 [报告]
发表于 2014-03-07 14:28 |只看该作者
回复 3# humjb_1983
内存 是 1033MHZ的,速度不会慢,我用
dd if=/dev/zero of=/dev/null bs=10240 count=1 试过,都是零点零几秒

升级版本什么的,不是不可以,就是代价有点儿大,
而且但是总要给领导个理由,就怕万一升级完后,问题照旧,那就没法子交代了


   

论坛徽章:
0
6 [报告]
发表于 2014-03-07 14:30 |只看该作者
回复 3# humjb_1983


    另外 我都是用 numactl  cpu和内存都是定到某个节点上的,而且仔细观察了 /proc/buddyinfo, 可以确保没有从远程分配

论坛徽章:
0
7 [报告]
发表于 2014-03-07 14:31 |只看该作者
刚刚用 oprofile 采样了一下内核
发现
80%以上在 text.acpi_processo_idle 上
这个是做什么的?

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
8 [报告]
发表于 2014-03-07 15:36 |只看该作者
这是acpi模式下的cpu_idle()接口,即CPU空闲时就会进入此函数。
这样就不对了,该函数应该表示CPU空闲才对,不应该cpu占用100%哦
cat /proc/cmdline看看结果呢?
另外,看看试试吧apci关掉试试?

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
9 [报告]
发表于 2014-03-07 15:40 |只看该作者
lovegq 发表于 2014-03-07 14:31
刚刚用 oprofile 采样了一下内核
发现
80%以上在 text.acpi_processo_idle 上

另外,请在测试时,将测试进程的内核态堆栈打一下。看看具体在干嘛

论坛徽章:
0
10 [报告]
发表于 2014-03-07 16:29 |只看该作者
大哥,我不是内核开发人员,不会打内核堆栈,用什么sysQ魔术键?
怎么关acpi? bios? 开机选项?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP