【测试报告】【小于 5usec】有关 Erlang 派生进程的性能问题

发布于 2022-08-16 01:04:36 字数 6047 浏览 15 评论 4

关键词:
Erlang,SMP
五万个进程
每进程耗时 4微秒
CPU <17%
内存小于 80M

前段时间按照《Erlang 程序设计》上所讲,
在我的机器上做了一个测试,结果如下(括号里是墙上时间):

  1. 11> processes:max(50000).
  2. Process spawn time=4.0 (4.54) microseconds
  3. ok
  4. 12> processes:max(50000).
  5. Maximum allowed processes:60000
  6. Process spawn time=4.0 (4.82) microseconds
  7. ok
  8. 13> processes:max(50000).
  9. Maximum allowed processes:60000
  10. Process spawn time=3.2 (4.66) microseconds
  11. ok
  12. 14> processes:max(50000).
  13. Maximum allowed processes:60000
  14. Process spawn time=3.8 (4.48) microseconds
  15. ok
  16. 代码是用的《Erlang 程序设计》上的:
  17. $ cat processes.erl
  18. %% ---
  19. %%  Excerpted from "Programming Erlang",
  20. %%  published by The Pragmatic Bookshelf.
  21. %%  Copyrights apply to this code. It may not be used to create training material,
  22. %%  courses, books, articles, and the like. Contact us if you are in doubt.
  23. %%  We make no guarantees that this code is fit for any purpose.
  24. %%  Visit [url]http://www.pragmaticprogrammer.com/titles/jaerlang[/url] for more book information.
  25. %%---
  26. -module(processes).
  27. -export([max/1]).
  28. %% max(N)
  29. %%   Create N processes then destroy them
  30. %%   See how much time this takes
  31. max(N) ->
  32.     Max = erlang:system_info(process_limit),
  33.     io:format("Maximum allowed processes:~p~n",[Max]),
  34.     statistics(runtime),
  35.     statistics(wall_clock),
  36.     L = for(1, N, fun() -> spawn(fun() -> wait() end) end),
  37.     {_, Time1} = statistics(runtime),
  38.     {_, Time2} = statistics(wall_clock),
  39.     lists:foreach(fun(Pid) -> Pid ! die end, L),
  40.     U1 = Time1 * 1000 / N,
  41.     U2 = Time2 * 1000 / N,
  42.     io:format("Process spawn time=~p (~p) microseconds~n",
  43.               [U1, U2]).
  44. wait() ->
  45.     receive
  46.         die -> void
  47.     end.
  48. for(N, N, F) -> [F()];
  49. for(I, N, F) -> [F()|for(I+1, N, F)].
  50. 4G 内存(其实和内存关系不大,因为占的内存很少,只有几十兆),CPU 信息:
  51. $ cat /proc/cpuinfo
  52. processor       : 0
  53. vendor_id       : GenuineIntel
  54. cpu family      : 6
  55. model           : 15
  56. model name      : Intel(R) Xeon(R) CPU            5110  @ 1.60GHz
  57. stepping        : 6
  58. cpu MHz         : 1595.944
  59. cache size      : 4096 KB
  60. physical id     : 0
  61. siblings        : 2
  62. core id         : 0
  63. cpu cores       : 2
  64. fdiv_bug        : no
  65. hlt_bug         : no
  66. f00f_bug        : no
  67. coma_bug        : no
  68. fpu             : yes
  69. fpu_exception   : yes
  70. cpuid level     : 10
  71. wp              : yes
  72. flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm
  73. bogomips        : 3194.88
  74. clflush size    : 64
  75. processor       : 1
  76. vendor_id       : GenuineIntel
  77. cpu family      : 6
  78. model           : 15
  79. model name      : Intel(R) Xeon(R) CPU            5110  @ 1.60GHz
  80. stepping        : 6
  81. cpu MHz         : 1595.944
  82. cache size      : 4096 KB
  83. physical id     : 0
  84. siblings        : 2
  85. core id         : 1
  86. cpu cores       : 2
  87. fdiv_bug        : no
  88. hlt_bug         : no
  89. f00f_bug        : no
  90. coma_bug        : no
  91. fpu             : yes
  92. fpu_exception   : yes
  93. cpuid level     : 10
  94. wp              : yes
  95. flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm
  96. bogomips        : 3192.09
  97. clflush size    : 64

复制代码
[ 本帖最后由 flw 于 2008-12-19 14:02 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

葬花如无物 2022-08-19 12:27:51

原帖由 gvim 于 2008-12-23 09:05 发表
我也试过,50000*10也没有太大的性能下降

good,能再仔细深入下去最好.

违心° 2022-08-18 12:51:50

原帖由 flw 于 2008-12-19 13:46 发表
关键词:
Erlang,SMP
五万个进程
每进程耗时 4微秒
CPU  processes:max(50000).
Process spawn time=4.0 (4.54) microseconds
ok
12> processes:max(50000).
Maximum allowed processes:60000
Proces ...

good

我不咬妳我踢妳 2022-08-17 15:30:52

我也试过,50000*10也没有太大的性能下降

云雾 2022-08-16 08:34:48

在Linux下还可以调节吧 !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文