質問
次のコードスニペットは、システムが開くのにかかる時間inkscape
と、ウィンドウをすぐに閉じるのにかかる時間を示していますinkscape
。
$ /usr/bin/time -p inkscape
real 26.95
user 0.59
sys 0.05
記事を読みました(ここそしてここ)人々はinkscapeの起動に時間がかかりすぎると報告しますが、答えはこの問題をユーザーのシステムにインストールされているフォントの数に関連付けます。
私が知っている限り、次のコマンドを使用して、自分のシステムにインストールされているフォントの数を取得できます(下記参照)。したがって、私のシステムにインストールされているフォントの数はここでは問題ではありません。
$ fc-list | wc -l
105
私はコマンド出力を見て、開いているプロセスをstrace
遅くする作業を見つけましたinkscape
。 (フルログはstrace
すべての出力でいくつかの個々のファイルの名前を報告するため、ログ全体を共有しません。)
$ strace --absolute-timestamps=ns inkscape
...
13:27:03.700577007 read(11, "\1\0\0\0\0\0\0\0", 16) = 8
13:27:03.700603187 poll([{fd=11, events=POLLIN}], 1, 25000) = 0 (Timeout)
13:27:28.725932887 write(11, "\1\0\0\0\0\0\0\0", 8) = 8
13:27:28.726024537 futex(0x55ca60dcb240, FUTEX_WAKE_PRIVATE, 2147483647) = 0
...
上記のように、2つの操作の間に25秒の間隔があるため、これは問題に関連しています。
質問
システムコールは何をしておりpoll
、システムがそのシステムコールを実行するのにかかる時間をどのように短縮できますか?
PD1:poll([{fd=11, events=POLLIN}], 1, 25000
Googleで探してみました。この問題ポスターの1つは、GTK3アプリケーションが遅く起動し、これらのstrace
誤動作がディスプレイシステムの呼び出しに時間がかかりすぎるという事実(この記事に記載されているものと同じ)に関連付けられていると説明しましたが、答えは役に立ちませんでした。
答え1
特定のシステムコールはそうではありません。行為それ自体で何でも。それ待つ具体的には、FD 11からデータを読み取ることができるように他の操作を実行してください。待っているデータを取得できない理由を特定するには、FDが何に接続されているかを確認し、反対側の書き込みに何を接続する必要があるかを確認する必要があります。
さて、この問題あなたが見つけたもの極度に役に立つ場合は、あまりにも早く無視するのではなく、慎重に読んでアドバイスを聞く必要があります。