1

当我与我的用户一起运行此处描述的脚本时,一切都很好:

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.4

Linux 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

在飞鸿 X4 上。

4

2 回答 2

7

Why do you think it crashed? time just shows more info when running as root. Page fault is not an error but just the way virtual memory works.

于 2011-08-10T19:42:49.803 回答
3

两次运行之间的区别在于,在第一次运行中,您运行的是 shell builtin time,但在第二次运行中,您运行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
于 2011-08-12T13:36:12.390 回答