指向性メモ::2008-12-09::AdaでC10K

ページ情報
制作日
2008-12-09T11:27:42+09:00
最終更新日
2008-12-09T11:27:42+09:00
ページ内目次

少なくともPOSIX上のAdaのTaskはカーネルスレッドとして実装されているらしい。

% uname -a
Linux ***** 2.6.18-92.1.18.el5 #1 SMP Wed Nov 12 09:19:49 EST 2008 x86_64 x86_64 x86_64 GNU/Linux
% /usr/local/gcc4.3/bin/gnat --version
GNAT 4.3.2
% /lib64/libc-2.5.so
GNU C Library stable release version 2.5, by Roland McGrath et al.

こんな感じの環境で試してみたところ、NPTLでスレッドが増えている様に見える。

試しにTaskを10K個作ってみた。

procedure C10K is
   Client_Max : constant := 10_000;

   task type Client is
      entry Die;
   end Client;


   task body Client is
   begin
      accept Die do
         null;
      end Die;
   end Client;

   Clients : array (1 .. Client_Max) of Client;

begin
   null;
end C10K;

結論から言うと、死んだ。

AdaもC10Kに対応するならばepollなり何なりを使わないとダメなようだ。

Comments

Trackbacks

Trackback Ping URI

http://yudai.arielworks.com/memo/2008/12/09/112742.trackback

末尾に「2 + 6」の計算結果を繋げて下さい。例えば計算結果が「17」の場合、「112742.trackback17」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

Name (optional)
Email address or URI (optional)
Do the math below (required to filter comment spams)
2 + 6 + 8 =
Message (required)
Submit
連絡先、リンク、転載や複製などについては『サイト案内』をご覧ください。Powered by HIMMEL

I ♥ Validator