用C语言就不说了,很简单。问题是怎么用shell直接得到?我自己想了想,然后又搜了搜,发现了下面这四种方法:
/usr/bin/time -f %Z true
LD_SHOW_AUXV=1 /bin/true | grep PAGESZ
grep ^KernelPageSize /proc/self/smaps
python -c ‘import resource; print resource.getpagesize();’
前两个是google到的,后两个是我自己弄出来的。
我个人觉得最靠谱的是第2个,因为它既不需要依赖python或者perl,而且是从内核获取的。第1个很让人惊讶,因为打死我我也不会想到time这个命令下居然还有获取page size的功能。。。注意,这个time是外置的命令,而非shell内置的那个time。
time?????
这个,这个……也行~
[Reply]
这个命令也可以
$getconf PAGESIZE
[Reply]
王 聪 reply on August 1, 2009 3:52 pm:
对!我把这个给忘了。
[Reply]
试验了一下
[root@localhost ~]# grep ^KernelPageSize /proc/self/smaps
[root@localhost ~]# py
pydoc pygtk-demo python python2.5-config
pygobject-codegen-2.0 pylupdate4 python2 python-config
pygtk-codegen-2.0 pyrcc4 python2.5 pyuic4
[root@localhost ~]# python -c ‘import resource; print resource.getpagesize();’
bash: syntax error near unexpected token `(‘
[root@localhost ~]#
后面两个没出来呢?
[root@localhost ~]# uname -a
Linux localhost 2.6.27.25-170.2.72.fc10.i686 #1 SMP Sun Jun 21 19:03:24 EDT 2009 i686 i686 i386 GNU/Linux
[root@localhost ~]#
是不是我哪里没弄对呢?
[Reply]
王 聪 reply on August 10, 2009 8:59 pm:
1. 看看你的内核配置CONFIG_PROC_PAGE_MONITOR了没。
2. 看看的引号是不是有问题,不要直接在网页上复制,自己输。
[Reply]
Newuser reply on August 12, 2009 3:13 pm:
CONFIG_PROC_PAGE_MONITOR=y
看了一下/boot/下的config
这个被选上了
第二个手动输入可以了,高手
还以为直接复制粘贴就可以了呢
呵呵
[Reply]
王 聪 reply on August 20, 2009 11:14 pm:
恩,如果没选上连那个文件都不会有,我考虑错了。不知道是不是那一项在2.6.27的内核中还没有。。。你可以检查一下源代码。