FreeBSD Daily Topics

2007年8月21日thr_kill2(2)採用可否について議論中、ULEにおけるアイドル処理を改善、libdialogのMAX_LENを増加

heads-up

thr_kill2(2)

current - 自身とは別のプロセスで動作しているスレッドを終了させるために新しく追加されたシステムコールthr_kill2(2)に関して、採用の是非をめぐって議論が進められています。新しくシステムコールを追加することは重大事であるため、議論を行い開発者間のコンセンサスを得ていくことが大切です。

他のプロセスで動作しているスレッドを削除するというthr_kill2(3)システムコールは、とくにWindows APIエミュレーションレイヤであるWineにおいて必要になります。FreeBSDやPC-BSDでより多くのWindowsアプリケーションを動作させたりFlash 9をサポートするにはthr_kill2(3)を追加することが1つのアプローチというわけです。

同要望に対してWineをサポートするためだけにシステムコールを追加するのはどうだろうという意見があります。また7系で導入されたsigqueue(2)を使う方法もあります(ただしこの方法だと7系は良いものの6系はサポートされないだろうとみられます⁠⁠。

またLinux、Solaris、Mac OS X、WindowsなどほかのOSでどうやって実現されているかも材料として取り上げられています。

今後も議論が続けられるのではないかと考えられますが、強い反対がないかぎり利便性を優先して同システムコールが導入されることになるのではないかと思えます。または同機能を実現するために別の方法が提案されるかもしれません。興味深いトピックなのでしばらくは注目していきたいところです。

src

sys/kern/sched_ule.c

current - sched_ule.cにおいてsteal_threshの値がlog2(mp_ncpu)へと設定されました(実際のコードは「steal_thresh = min(ffs(mp_ncpus) - 1, 4);」。log2(mp_ncpu)ですが4以上には設定されません)。この変更によって2CPUでは1に、8CPUでは3になります。このため2CPUマシンではアイドル時間ロードバランスが改善され、8CPUではロードオペレーションが改善されます。

gnu/lib/libdialog

current - libdialogのMAX_LENの値が4096へと引き上げられました。同変更によってアイテムが多すぎるためにprint/ghostscript-gplのportのビルドが失敗していた問題が解決されています。

おすすめ記事

記事・ニュース一覧