2015-04-29

Linus Torvalds、「dbusはマジでクソだ」

Gmane Loom

Linus Torvaldsが、kdbusがdbusに比べてスピードアップしたということについてMLで話している。Linusの考えでは、dbusをカーネル側に持って行ったらコンテキストスイッチなどのオーバーヘッドを回避できるのでパフォーマンスアップにつながるという主張は間違っていて、現状のdbusのユーザースペースの処理が無駄にクソすぎるので遅いだけだという。

From: Linus Torvalds <torvalds <at> linux-foundation.org>
Subject: Re: [GIT PULL] kdbus for 4.1-rc1
Newsgroups: gmane.linux.kernel
Date: 2015-04-27 22:00:09 GMT (1 day, 3 hours and 39 minutes ago)

On Mon, Apr 27, 2015 at 2:40 PM, Andy Lutomirski <luto <at> amacapital.net> wrote:

> "USER"を"SESSION"に変えてみては。

動いた。

> ビルド方法は

そんなこと誰がするか。俺はこうした。

gcc client.c -o client $(pkg-config --cflags --libs gtk+-2.0)

これでいけた。

[訳注:先のLinusの発言]
>> とは言え、これはお前がpotatoでテストを動かしてるか、dubsが >> マジでクソかのどちらかだろ。1000バイトのメッセージを2万回往復 >> するのに4秒以上もかかるのはありえん。とはいえ、さっきも言ったように >> 俺には何が起こっているのか確かめることもできん[訳注: Linusはdbusのビルドができなかった] > > いえーい、俺はこのメールをpotatoで書いているんだけど見てるー?

いや、お前は正しいようだ。どうやらpotato説は違ったみたいだな。「dbusはマジでクソだ」説だ。

こいつにカーネルフットプリントなどほぼありゃしねぇ。時間をすべてユーザースペースのオーバーヘッドで浪費してやがる。

マジレスすると、プロファイルをちらっと見ただけでも、「kdbusはパフォーマンス上、重要だ」というのは完全に根拠のない話のようだ。これが問題の上位15だ。

   2.62%  gdbus    libc-2.20.so                [.] _int_malloc
   2.43%  gdbus    libc-2.20.so                [.] free
   2.31%  server   libc-2.20.so                [.] free
   2.12%  gdbus    libc-2.20.so                [.] malloc
   1.77%  gdbus    libglib-2.0.so.0.4200.2     [.] g_utf8_validate
   1.43%  gdbus    libglib-2.0.so.0.4200.2     [.] g_slice_alloc
   1.41%  gdbus    libglib-2.0.so.0.4200.2     [.] g_hash_table_lookup
   1.28%  server   libc-2.20.so                [.] _int_malloc
   1.27%  gdbus    libglib-2.0.so.0.4200.2     [.] g_mutex_lock
   1.22%  gdbus    libglib-2.0.so.0.4200.2     [.] g_variant_unref
   1.16%  server   libc-2.20.so                [.] malloc
   1.14%  gdbus    libglib-2.0.so.0.4200.2     [.] g_bit_lock
   1.07%  gdbus    libglib-2.0.so.0.4200.2     [.] g_slice_free1
   1.05%  gdbus    libglib-2.0.so.0.4200.2     [.] g_bit_unlock
   1.01%  gdbus    libglib-2.0.so.0.4200.2     [.] g_mutex_unlock

上位15にカーネル関数などありゃしねぇ。全部オーバーヘッドだ。これはサーバーサイドのものだが、クライアント側もほぼ同じだ。

たぶんだが、kdbusのスピードアップとやらは、カーネルには一切関係がない。単にdbusサーバーのユーザースペースのクソを使わなくてすむようになったからだ。

要するに、コンテキストスイッチを回避できるからとか宣う奴らはたぶん、単なるドアホだ。コンテキストスイッチじゃねーよ。クソなユーザースペースのコードのせいだ。

Linus

1 comment:

Anonymous said...

>> >> とは言え、これはお前がpotatoでテストを動かしてるか、dubsが >> マジでクソかのどちらかだろ。1000バイトのメッセージを2万回往復 >> するのに4秒以上もかかるのはありえん。とはいえ、さっきも言ったように >> 俺には何が起こっているのか確かめることもできん[訳注: Linusはdbusのビルドができなかった] > > いえーい、俺はこのメールをpotatoで書いているんだけど見てるー?

s/dubs/dbus/