当我用我的用户运行描述here的脚本时,一切都很顺利:
lorenzo@enzo:~/erlang/pei$ time erl -noshell -smp enabled -S 4 -s fib4 main 10000000
real 0m54.952s
user 1m16.090s
sys 0m0.070s
当我以root用户身份运行时,它崩溃了:
lorenzo@enzo:~/erlang/pei$ sudo time erl -noshell -smp enabled -S 4 -s fib4 main 10000000
[sudo] password for lorenzo:
74.68user 0.04system 0:53.56elapsed 139%CPU (0avgtext+0avgdata 66064maxresident)k
0inputs+0outputs (0major+8306minor)pagefaults 0swaps
错误是可重现的。
我的问题是:
有人可以试着解释一下那里发生了什么吗?
erlang运行时或我的操作系统有问题吗?
有人可以重现此错误吗?
我正在使用内核
在ubuntu natty上运行erlang 5.7.4Linux enzo 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
在Phenom X4上。
答案 0 :(得分:6)
为什么你认为它崩溃了? time
只是在以root身份运行时显示更多信息。 Page fault不是错误,而是virtual memory的工作方式。
答案 1 :(得分:3)
两次运行之间的区别在于,在第一次运行中,您运行的是内置time
的shell,但在第二次运行中,您正在运行路径中的sudo
个找到的内容,这是/usr/bin/time
。这两个工具具有不同的输出格式。
$ type time
time is a shell keyword
$ time echo
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ type /usr/bin/time
/usr/bin/time is /usr/bin/time
$ /usr/bin/time echo
0.01user 0.00system 0:00.00elapsed 1000%CPU (0avgtext+0avgdata 2784maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps