dragonfly bsd どうよ
なんか面白そうだが。
探検
dragonfly bsd どうよ
NGNG
NGNG
とりあえず乙かれー
NGNG
正直非常に期待しているのだが
FreeBSDのコードがそのまま動くGUIベースのOSになるの?
FreeBSDのコードがそのまま動くGUIベースのOSになるの?
NGNG
>>21
何を期待しているの?
何を期待しているの?
NGNG
>>22
ロゴ
ロゴ
NGNG
軽量スレッドが売り文句らしいが/.の記事だけでは良く分からん
ttp://slashdot.jp/bsd/04/03/14/1417235.shtml?topic=26
ttp://slashdot.jp/bsd/04/03/14/1417235.shtml?topic=26
NGNG
N+I2004のBSD BOFのスライドでは結構細かく解説していたよ。
あの発表をみて、ちょっとインストールしてみようかなと思った人も多かったみたい。
どっかに.pptを公開してくれないかな。
あの発表をみて、ちょっとインストールしてみようかなと思った人も多かったみたい。
どっかに.pptを公開してくれないかな。
NGNG
余計な時間をかなり横で喰われて肝心の発表がかなり飛ばされていたからなぁ... > N+I BOF
27名無しさん@お腹いっぱい。
NGNG で、誰か実際に使ってる?
インストーラ(LiveCDで手で入れるのじゃない方の)は試してみた?
インストーラ(LiveCDで手で入れるのじゃない方の)は試してみた?
NGNG
カーネルいじるわけでもない人がこれ使って何か楽しい事あるのかな
NGNG
んじゃ、FreeBSD5とDragonflyBSDとでApache2のパフォーマンスの違いを測定して楽しむ。
NGNG
SMPだと違いが出そうだな。
31名無しさん@お腹いっぱい。
NGNG FreeBSD5となにがどうちがうの?
32名無しさん@お腹いっぱい。
NGNGNGNG
NGNG
NGNG
SMP環境といっても、これからはマルチコア化で性能稼ぐ方向に
あるらしいから、特別な環境というわけでもないんだよね。
あるらしいから、特別な環境というわけでもないんだよね。
NGNG
SMPマザーでapache2をMPM=WORKERで動かして、FreeBSD5とDragonflyでどのぐらい違うかだよな。
NGNG
はじめてのBSD体験になりました
蟹NICの認識どうすればよいんだ
rouge入っててワロタ
蟹NICの認識どうすればよいんだ
rouge入っててワロタ
NGNG
初めて過ぎてISOをブートCDにする方法すら分からん(汗
40名無しさん@そうだ選挙に行こう
NGNG rogue入っているなら、Dragonfly支持
NGNG
GUIに力を入れるってのはいいね
ぬるユーザのおいら向け
ぬるユーザのおいら向け
NGNG
benchmark マダー(AA略
NGNG
ドラゴンフリャーBSD
NGNG
>>43
それは邦訳版をエビフライBSDにしろという圧力ですか?
それは邦訳版をエビフライBSDにしろという圧力ですか?
NGNG
オレ竜BSDかよ
NGNG
ヘ へ
EbiFly BSD :| / /
.;: ":;.
∧∧,..,.. ;'、., : 、
;'・-・o、:、.: : ;:'
'、;: ...: ,:. :.、.: '
`"∪∪''゙
EbiFly BSD :| / /
.;: ":;.
∧∧,..,.. ;'、., : 、
;'・-・o、:、.: : ;:'
'、;: ...: ,:. :.、.: '
`"∪∪''゙
NGNG
同じコードではコンパイル出来ない事態に陥ったら*BSD系じゃ無くなるね
NGNG
,.、,、,..,、、.,、,、、..,_ /i
;'`Dragonfly BSD:.:゙:`''':,'.´ -‐i
'、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
`"゙' ''`゙ `´゙`´´´
Dragonfly BSD
 ̄ ̄∨ ̄ ̄ ̄ ̄
.∧∧
,.、,(゚∀゚ ) /i
;'`;、. :,.:∪`゙:゙:`''':,'.´ -‐i
'、;:.: .、.:',.: .:: _;.;. :.‐'゙゙~  ̄
`` U U
,.、,、,..,、、.,、,、、..,_ /i
;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
'、;: ...: ,:. :.、.∩.. .:: _;.;;.∩‐'゙  ̄  ̄
`"゙' ''`゙ //゙`´´ | |
//Λ_Λ | |
| |( ´Д`)// <Dragonfly BSD
\ |
\ |
(ry
;'`Dragonfly BSD:.:゙:`''':,'.´ -‐i
'、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
`"゙' ''`゙ `´゙`´´´
Dragonfly BSD
 ̄ ̄∨ ̄ ̄ ̄ ̄
.∧∧
,.、,(゚∀゚ ) /i
;'`;、. :,.:∪`゙:゙:`''':,'.´ -‐i
'、;:.: .、.:',.: .:: _;.;. :.‐'゙゙~  ̄
`` U U
,.、,、,..,、、.,、,、、..,_ /i
;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
'、;: ...: ,:. :.、.∩.. .:: _;.;;.∩‐'゙  ̄  ̄
`"゙' ''`゙ //゙`´´ | |
//Λ_Λ | |
| |( ´Д`)// <Dragonfly BSD
\ |
\ |
(ry
NGNG
俺もNuggetBSD作ろうと思います。
NGNG
>>41
LiveCDの方にはX入って無かったよ
LiveCDの方にはX入って無かったよ
NGNG
>48,46
龍ふりゃー だったら fly じゃなくて fry なんじゃネーノ?
あとどうせならデーモン君が fork で食べているとかそんな絵にしないと。
龍ふりゃー だったら fly じゃなくて fry なんじゃネーノ?
あとどうせならデーモン君が fork で食べているとかそんな絵にしないと。
NGNG
お前らは中学を卒業できていないDQNの群れですか。
NGNG
いいじゃんそんなBSDがあっても
人生を楽しく生きるコツは童心を忘れない事だ
人生を楽しく生きるコツは童心を忘れない事だ
NGNG
FlyBSDとしてFreeBSD2系のメンテを行いたいと思います。
NGNG
EbiFry BSDとしてスキンを用意して邦訳すると。
NGNG
スキンは岡本理研でいいですか?
NGNG
それじゃエビフライじゃなくてイカフライだろ
NGNG
このスレだけノリがUNIXっぽくないな
NGNG
UNIX板は下ネタが多いので無問題。
NGNG
来ましたよー
NGNG
いらっしゃいませ。
NGNG
(・∀・)エッコー
NGNG
NGNG
Frescoが標準だったりして
NGNG
NGNG
NGNG
デーモン君のフェードアウトはGUIへの本気度の表れと見た
NGNG
デーモンダサイ、死ね
NGNG
インストーラのバグで、パーティションが既に存在するディスクに
fdiskを使った場合、後ろのほうにあるパーティションの情報を
吹き飛ばしてしまう可能性があるらしい。パーティションの切り直しが
必要な人は修正版が出るのを待ったほうが無難。
fdiskを使った場合、後ろのほうにあるパーティションの情報を
吹き飛ばしてしまう可能性があるらしい。パーティションの切り直しが
必要な人は修正版が出るのを待ったほうが無難。
NGNG
CUI・GUIの起動画面に使えるエビフライを依頼するしか俺たちに残された道は無い。
NGNG
GUIに力入れるならまずインストーラからGUIにしてほしいね。
そーいやQt使ったインストーラて見ないな
そーいやQt使ったインストーラて見ないな
NGNG
FreeBSD 4.x と DragonFly でベンチ取ろうと思うんだけど、何か有用な
ベンチ知ってる人いますかー ?
>>36 のを 4.x で取ろうと思ったら apache2 を worker でビルドできんかった。
ベンチ知ってる人いますかー ?
>>36 のを 4.x で取ろうと思ったら apache2 を worker でビルドできんかった。
NGNG
そりゃそーだ。
currentは最近マズーだから5.2.1Rで取ってみたら? acpiはオフで。
currentは最近マズーだから5.2.1Rで取ってみたら? acpiはオフで。
NGNG
5.x にはあげられない理由がちとありまして。。。
4.x で何とかならないかな、と。
4.x で何とかならないかな、と。
NGNG
なんとかすれば。というか普通にデフォルトでビルドすればいいじゃん。
NGNG
そろそろBSDもカーネルにGUI関係を組み込んでもいいころだね
NGNG
・WindowsのようにカーネルへGUI関連の機能を埋め込む。
・BeOSのようにドライバ用の仮想空間(インターフェイス)を作る。
・TRONのようにユーザーランドを1プロセスにする。
・MacOSのようにX11以外のウィンドウシステムを作る。
・BeOSのようにドライバ用の仮想空間(インターフェイス)を作る。
・TRONのようにユーザーランドを1プロセスにする。
・MacOSのようにX11以外のウィンドウシステムを作る。
NGNG
NGNG
DragonflyのGUI重視ってのは、
Linuxのディストリみたいに、インストールすると、
KDEなり、GNOMEなり標準搭載されたGUIで起動できるって事なのかな?
Linuxのディストリみたいに、インストールすると、
KDEなり、GNOMEなり標準搭載されたGUIで起動できるって事なのかな?
NGNG
んなアフォな
NGNG
>>79 「GUI重視」というのはソースは?
NGNG
>>78
古いWindowsNTみたいになるのか?
古いWindowsNTみたいになるのか?
NGNG
GUI重視ではなくて、GUIにも力を入れるよと言ってるだけだね。
ttp://slashdot.jp/bsd/04/03/14/1417235.shtml?topic=26
ttp://slashdot.jp/bsd/04/03/14/1417235.shtml?topic=26
NGNG
userlandが4ベースというのが激しく気にいらんなぁ。
NGNG
でもrcNGが入ってるのはうれしい。
NGNG
NGNG
(´・ω・`)エッコー...
NGNG
インストールしてみたけど、時計がはえーです。普通の 2倍くらいのはやさで
時を刻んでます。
acpi も切ったりしてみたけど、変わらず。同じような症状出た人いませんか ?
時を刻んでます。
acpi も切ったりしてみたけど、変わらず。同じような症状出た人いませんか ?
NGNG
>>88
ワラタ
ワラタ
NGNG
>>88
その場合、パフォーマンスも2倍になるのか?
だったら素晴らしい機能だ。
……という冗談は置いといて、似たような話をFreeBSDでも聞いたことが
あったような気がする。
確かsysctlでkern.timecounter.*をいじるようなことを言ってたような……
その場合、パフォーマンスも2倍になるのか?
だったら素晴らしい機能だ。
……という冗談は置いといて、似たような話をFreeBSDでも聞いたことが
あったような気がする。
確かsysctlでkern.timecounter.*をいじるようなことを言ってたような……
NGNG
>>90
残念ながらdflyにkern.timecounterは存在しない。
MLのバグレポートではP166が実際に速くなるらしいね。
|Re-syncing the clock is not the problem. :) Having a CPU that is
|running at hyperspeed and causing heat problems is. When the system
|clock starts running faster, the whole system starts running faster.
|I've watched the P166 run through a buildworld in very little time
|(around 30 minutes wall time). The resulting binaries don't work,
残念ながらdflyにkern.timecounterは存在しない。
MLのバグレポートではP166が実際に速くなるらしいね。
|Re-syncing the clock is not the problem. :) Having a CPU that is
|running at hyperspeed and causing heat problems is. When the system
|clock starts running faster, the whole system starts running faster.
|I've watched the P166 run through a buildworld in very little time
|(around 30 minutes wall time). The resulting binaries don't work,
9288
NGNGNGNG
> The resulting binaries don't work,
って、おいおい…
って、おいおい…
NGNG
なんでこんな状態で1.0にしちゃったんだ。リリースマネージメントがアレすぎ。
NGNG
そらマネジメントする奴がおらんからな。
>>94 やってみるか?
>>94 やってみるか?
NGNG
version1.0じゃなくてupload1.0って意味にしとこう。
NGNG
NGNG
MacOSX並のGUIまだー チンチン
NGNG
>>98
gnustep(違
gnustep(違
100名無しさん@お腹いっぱい。
NGNG 100age
NGNG
今日cvsupしたんだけれど、
CCVERがgcc34でbuildworld通った人います?
CCVERがgcc34でbuildworld通った人います?
NGNG
LiveCD版しか使ってない
↓どう?
↓どう?
NGNG
>>101
無理です。あきらめて一度gcc2でbuildworldしましょう。
無理です。あきらめて一度gcc2でbuildworldしましょう。
NGNG
NGNG
まあ、userlandのベースがFreeBSD4.xだから、gcc3でコンパイルできなくても文句は
言えないってことなんだろうけど…
言えないってことなんだろうけど…
106103
NGNG >>105
違う違う、そういう意味じゃない。gcc3用のクリーンアップはずっと
昔に済んでるよ。問題なのはbuildworldの最初の方にやるいくつかの
サブターゲットはシステムにインストールされているコンパイラを使うん
だけど、CCVER=gcc34になっているとそのコンパイラが(存在しない)
gcc34を使おうとして失敗するというものだったはず。もしbsd.cpu.mkに
怒られるんだったらソースツリーの中じゃなくシステムの方の/usr/share/mkを
使っているということだから、CCVER_BSD_CPU_MK=gcc2と設定すればいいんだけど
まあ試してみて。
違う違う、そういう意味じゃない。gcc3用のクリーンアップはずっと
昔に済んでるよ。問題なのはbuildworldの最初の方にやるいくつかの
サブターゲットはシステムにインストールされているコンパイラを使うん
だけど、CCVER=gcc34になっているとそのコンパイラが(存在しない)
gcc34を使おうとして失敗するというものだったはず。もしbsd.cpu.mkに
怒られるんだったらソースツリーの中じゃなくシステムの方の/usr/share/mkを
使っているということだから、CCVER_BSD_CPU_MK=gcc2と設定すればいいんだけど
まあ試してみて。
NGNG
>>103
CCVER_BSD_CPU_MK=gcc2 設定したらbuildworld通りますた(`・ω・´)
ついでにmake.confも見直したんだけれど、
/etc/defaultsにもmake.conf入っていてびびった。
FreeBSDも最近は/etc/defaultsに入ってるのかな。
CCVER_BSD_CPU_MK=gcc2 設定したらbuildworld通りますた(`・ω・´)
ついでにmake.confも見直したんだけれど、
/etc/defaultsにもmake.conf入っていてびびった。
FreeBSDも最近は/etc/defaultsに入ってるのかな。
NGNG
4.xでは/etc/defaultsに入ってる
5.xでは違うところに入ってる
5.xでは違うところに入ってる
NGNG
hrs氏の日記にDragonFlyの話題が。
ttp://www.allbsd.org/~hrs/diary/200408.html#d0801
日本語の文書の中では、今のとこ一番わかりやすいと思う。
ttp://www.allbsd.org/~hrs/diary/200408.html#d0801
日本語の文書の中では、今のとこ一番わかりやすいと思う。
NGNG
ポート/メッセージモデル
DragonFlyはLWKTに同調する軽量なポート/メッセージAPIを備える予定です。
ポート/メッセージAPIの概念は非常に単純です。まずメッセージを組み立て、
目標となるポートへ送り、あとで自分の応答ポートに返事が来るのを待つ
というものです。この単純な概念にもとづいて、高度な機能を構築し、
洗練化を行います。このメッセージングシステムの機能を理解するには、
まずメッセージがどのように送信されるのかを理解する必要があります。
基本的には以下のように動作します:
DragonFlyはLWKTに同調する軽量なポート/メッセージAPIを備える予定です。
ポート/メッセージAPIの概念は非常に単純です。まずメッセージを組み立て、
目標となるポートへ送り、あとで自分の応答ポートに返事が来るのを待つ
というものです。この単純な概念にもとづいて、高度な機能を構築し、
洗練化を行います。このメッセージングシステムの機能を理解するには、
まずメッセージがどのように送信されるのかを理解する必要があります。
基本的には以下のように動作します:
NGNG
メッセージAPIはこの基本的は構造を同期/非同期メッセージ関数に内包します。
lwkt_domsg()はメッセージを同期的に送り、返答を待ちます。この関数は
目標ポートにヒントを与えるためのフラグをセットします。それはメッセージが
同期的にブロックされることを示すもので、目標ポートがEASYNCを返した場合
lwkt_domsg()はブロックします。lwkt_sendmsg()はメッセージを非同期的に
送りますが、目標ポートが同期的なエラーコード(つまりEASYNC以外全て)を返した
場合、lwkt_sendmsg()はもう完了したメッセージを返答ポート自身のキューに手動で
入れます。
lwkt_domsg()はメッセージを同期的に送り、返答を待ちます。この関数は
目標ポートにヒントを与えるためのフラグをセットします。それはメッセージが
同期的にブロックされることを示すもので、目標ポートがEASYNCを返した場合
lwkt_domsg()はブロックします。lwkt_sendmsg()はメッセージを非同期的に
送りますが、目標ポートが同期的なエラーコード(つまりEASYNC以外全て)を返した
場合、lwkt_sendmsg()はもう完了したメッセージを返答ポート自身のキューに手動で
入れます。
112名無しさん@中学生英語
NGNGNGNG
推測できると思いますが、目標ポートのmp_SendMsg()関数はメッセージを
どう扱うかを完全に制御します。メッセージフラグによって渡されたヒントが
どのようなものであっても、目標ポートはメッセージに対して(呼び元から
見て)同期的にふるまって応答することも、メッセージをキューに入れてEASYNCを
返すこともできます。一般的にメッセージ処理は発信者から見て「ブロック」
すべきではありません。つまり、メッセージを同期的に処理することがブロック
につながるのであれば目標ポートは同期的に処理してはいけないということです。
そのかわりに、自身のスレッドのキュー(目標ポートの構造体に、便利なように
埋め込んであるメッセージキュー)に入れて、EASYNCを返すようにします。
どう扱うかを完全に制御します。メッセージフラグによって渡されたヒントが
どのようなものであっても、目標ポートはメッセージに対して(呼び元から
見て)同期的にふるまって応答することも、メッセージをキューに入れてEASYNCを
返すこともできます。一般的にメッセージ処理は発信者から見て「ブロック」
すべきではありません。つまり、メッセージを同期的に処理することがブロック
につながるのであれば目標ポートは同期的に処理してはいけないということです。
そのかわりに、自身のスレッドのキュー(目標ポートの構造体に、便利なように
埋め込んであるメッセージキュー)に入れて、EASYNCを返すようにします。
NGNG
: (このパラグラフは特に変更しなくていいよね)
ここで覚えておくべき重要なことは、もっともよい最適化とはmp_SendMsg()に
よる直接の実行で、単純なサブルーチン呼出しの他には実質的にオーバヘッドを
伴わないことです(訳注: no more〜thenはDillonのいつもの釣りね)。
キュー処理もせず、応答ポートをいじることもなく、ということです。もし
メッセージを同期的に扱ってよいのであれば、これは非常にコストの低い
処理ということになります。この特徴があるからこそ、性能の問題を気にせずに
メッセージングインタフェースを意図して使うことができるのです。私達は
たとえばMachで用いているような種類の洗練手法を使うことはあえてしません。
少なくとも低レベルなメッセージインタフェイスでは、メモリマップやポインタの
追跡といったことをしません。ユーザ⇔カーネル間のメッセージインタフェイスは
単純にmp_SendMsg()の関数ベクタを用い、それによって適切な変換をします。
そうすることで、送信側と受信側に関しては、メッセージがそれらの
VMコンテキストに対しローカルになります(局所性を持つということ)。
ここで覚えておくべき重要なことは、もっともよい最適化とはmp_SendMsg()に
よる直接の実行で、単純なサブルーチン呼出しの他には実質的にオーバヘッドを
伴わないことです(訳注: no more〜thenはDillonのいつもの釣りね)。
キュー処理もせず、応答ポートをいじることもなく、ということです。もし
メッセージを同期的に扱ってよいのであれば、これは非常にコストの低い
処理ということになります。この特徴があるからこそ、性能の問題を気にせずに
メッセージングインタフェースを意図して使うことができるのです。私達は
たとえばMachで用いているような種類の洗練手法を使うことはあえてしません。
少なくとも低レベルなメッセージインタフェイスでは、メモリマップやポインタの
追跡といったことをしません。ユーザ⇔カーネル間のメッセージインタフェイスは
単純にmp_SendMsg()の関数ベクタを用い、それによって適切な変換をします。
そうすることで、送信側と受信側に関しては、メッセージがそれらの
VMコンテキストに対しローカルになります(局所性を持つということ)。
NGNG
軽量カーネルスレッドモデル
DragonFlyはその中核部分に軽量カーネルスレッド(LWKT)を用います。
システムのプロセスは全てスレッドと結びついていて、カーネルのみの
プロセスのほとんどは事実上純粋なスレッドです。たとえば、pageout
デーモンは純粋なスレッドでプロセスコンテクストを持ちません。
LWKTモデルはアーキテクチャによらないいくつかの鍵となる特徴があります。
これらの特徴はCPU間の競合を除く、あるいは減らすために設計されています。
1.システムの各CPUは自己完結のLWKTスケジューラを持ちます。スレッドは意図的に
CPUに結びついていて、いくつかの特殊な状況下でのみ他のCPUへ移動することが
できます。特定のCPU上のLWKTスケジューリング処理はそのCPU上でのみ直接
実行されます。これは、LWKTスケジューラ本体がスケジュール追加、除去、
CPU内でのスレッド間スイッチを、ロックを一切せずに処理できるということです。
単純なクリティカルセクションの除いてはMPロックもなにもなしにです。
2. スレッドはカーネルで動作中は他のCPUにプリエンプティブに移動されることは
ありません。スレッドはブロックされている間はCPU間を移動しません。
ユーザランドスケジューラはユーザモードで実行しているスレッドを移動できます。
スレッドは非割り込みスレッドへプリエンプティブにスイッチすることは
ありません(この間FreeBSD初心者スレで出た話題のやつね)。割り込みスレッドが
カレントスレッドをプリエンプトする場合、割り込みスレッドが終了または
ブロックした時点でプリエンプトされた方のスレッドはスケジュール状態によらず
復元されます。たとえば、あるスレッドはlwkt_deschedule_self()を呼んだあと、
実際に(別のスレッドへ)スイッチする前にプリエンプトされる可能性があります。
これは問題ありません。なぜなら割り込みスレッドが完了またはブロックしたあと
そのスレッドに直接制御が戻るからです。
DragonFlyはその中核部分に軽量カーネルスレッド(LWKT)を用います。
システムのプロセスは全てスレッドと結びついていて、カーネルのみの
プロセスのほとんどは事実上純粋なスレッドです。たとえば、pageout
デーモンは純粋なスレッドでプロセスコンテクストを持ちません。
LWKTモデルはアーキテクチャによらないいくつかの鍵となる特徴があります。
これらの特徴はCPU間の競合を除く、あるいは減らすために設計されています。
1.システムの各CPUは自己完結のLWKTスケジューラを持ちます。スレッドは意図的に
CPUに結びついていて、いくつかの特殊な状況下でのみ他のCPUへ移動することが
できます。特定のCPU上のLWKTスケジューリング処理はそのCPU上でのみ直接
実行されます。これは、LWKTスケジューラ本体がスケジュール追加、除去、
CPU内でのスレッド間スイッチを、ロックを一切せずに処理できるということです。
単純なクリティカルセクションの除いてはMPロックもなにもなしにです。
2. スレッドはカーネルで動作中は他のCPUにプリエンプティブに移動されることは
ありません。スレッドはブロックされている間はCPU間を移動しません。
ユーザランドスケジューラはユーザモードで実行しているスレッドを移動できます。
スレッドは非割り込みスレッドへプリエンプティブにスイッチすることは
ありません(この間FreeBSD初心者スレで出た話題のやつね)。割り込みスレッドが
カレントスレッドをプリエンプトする場合、割り込みスレッドが終了または
ブロックした時点でプリエンプトされた方のスレッドはスケジュール状態によらず
復元されます。たとえば、あるスレッドはlwkt_deschedule_self()を呼んだあと、
実際に(別のスレッドへ)スイッチする前にプリエンプトされる可能性があります。
これは問題ありません。なぜなら割り込みスレッドが完了またはブロックしたあと
そのスレッドに直接制御が戻るからです。
NGNG
3. 上の(2)により、スレッドはCPUごとのglobaldata構造体を通じて得た
情報をロックなしにキャッシュすることができます。また、その情報が
割り込みスレッドによって変更されないと分かっている場合は、
クリティカルセクションに入る必要がありません。これによって、
いろいろな種類のデータのCPUごとのキャッシュ(訳注: 「の」の連続だ)
を、事実上オーバヘッドなしに持つことができます。
4. あるCPUが他のCPUに属するスレッドをスケジュールしようとする場合は、
ターゲットCPUにIPIベースのメッセージを発行して、処理を実行します。
このメッセージはデフォルトで非同期で、このためIPIはレイテンシを
伴うことがありますが必ずしもCPUサイクルを浪費するとは限りません。
このIPIの処理はクリティカルセクションに入ったスレッドによってブロック
されます。実際、LWKTスケジューラはそうします。クリティカルセクションの
出入りは安価な処理と考えられるので、ロックやバスロック命令を必要と
しません。
5. IPIメッセージサブシステムはFIFOあふれによるデッドロックに対し、
送信キューの停滞が解消するのを待つ間、受信キューをスピンして処理する
ことで対処します。IPIメッセージサブシステムはこのような状況下で
特にスレッドのスイッチを行いません。これによって、まれにスピンが
発生する場合があってもソフトウェアはこれをノンブロッキングAPIのように
扱うことができます。
情報をロックなしにキャッシュすることができます。また、その情報が
割り込みスレッドによって変更されないと分かっている場合は、
クリティカルセクションに入る必要がありません。これによって、
いろいろな種類のデータのCPUごとのキャッシュ(訳注: 「の」の連続だ)
を、事実上オーバヘッドなしに持つことができます。
4. あるCPUが他のCPUに属するスレッドをスケジュールしようとする場合は、
ターゲットCPUにIPIベースのメッセージを発行して、処理を実行します。
このメッセージはデフォルトで非同期で、このためIPIはレイテンシを
伴うことがありますが必ずしもCPUサイクルを浪費するとは限りません。
このIPIの処理はクリティカルセクションに入ったスレッドによってブロック
されます。実際、LWKTスケジューラはそうします。クリティカルセクションの
出入りは安価な処理と考えられるので、ロックやバスロック命令を必要と
しません。
5. IPIメッセージサブシステムはFIFOあふれによるデッドロックに対し、
送信キューの停滞が解消するのを待つ間、受信キューをスピンして処理する
ことで対処します。IPIメッセージサブシステムはこのような状況下で
特にスレッドのスイッチを行いません。これによって、まれにスピンが
発生する場合があってもソフトウェアはこれをノンブロッキングAPIのように
扱うことができます。
NGNG
これらの鍵となる特徴に加え、LWKTモデルでは高速割込みプリエンプション
とスレッド割込みプリエンプションを両立します。高速割り込みはカレント
スレッドがクリティカルセクションに入っていない場合はプリエンプトできます。
スレッド割込みもカレントスレッドをプリエンプトできます。LWKTシステムは、
スレッド割込みにスイッチしたあとそれがブロックまたは完了した場合に
もとのスレッドに戻ります。IPI関数は高速割り込みと非常に似たやり方で
動作し、同じくtrapframe機能を持ちます。これはDragonFlyのSYSTIMERS APIで
hardclock()やstatclock()の割込みを全てのCPUに分配するために多く用いられて
います。
とスレッド割込みプリエンプションを両立します。高速割り込みはカレント
スレッドがクリティカルセクションに入っていない場合はプリエンプトできます。
スレッド割込みもカレントスレッドをプリエンプトできます。LWKTシステムは、
スレッド割込みにスイッチしたあとそれがブロックまたは完了した場合に
もとのスレッドに戻ります。IPI関数は高速割り込みと非常に似たやり方で
動作し、同じくtrapframe機能を持ちます。これはDragonFlyのSYSTIMERS APIで
hardclock()やstatclock()の割込みを全てのCPUに分配するために多く用いられて
います。
NGNG
IPIメッセージサブシステム
LWKTモデルはCPU間通信のための非同期メッセージシステムを実装します。
基本的には、関数ポインタとデータ引数を引数として関数を呼び出すと
ターゲットCPUにそれを渡り、ターゲットCPUはそれを非同期に実行します。
これは非同期モデルなので呼び側は同期完了を待ちません。このため性能が
非常に向上し、ターゲットCPUへのオーバヘッドもおおまかには割り込み
と同等程度です。
IPIメッセージは高速割り込みのように動作します...つまり(クリティカル
セクションに左右されますが)ターゲットCPUで動いているものは何でも
プリエンプトし、実行し、そのあともともと動いていたものに復帰します。
このためIPI関数はいかなる理由であってもブロックすることは許されません。
IPIメッセージはスレッドをスケジュールしたり他のCPUに属しているメモリを
解放するといった処理をするのに用いられます。
IPIメッセージ処理は少なくとも6個の主なLWKTサブシステムで多用されています。
それらには、CPUごとのスレッドスケジューラ、slab allocator、メッセージ
サブシステムが含まれています。IPIメッセージ処理はDragonFlyに本来的に
適応したサブシステムなので、Big Giant Lockを必要とせず、使用してもいません。
全てのIPIベースの関数は従ってMPセーフである必要があります(そうなっています)。
LWKTモデルはCPU間通信のための非同期メッセージシステムを実装します。
基本的には、関数ポインタとデータ引数を引数として関数を呼び出すと
ターゲットCPUにそれを渡り、ターゲットCPUはそれを非同期に実行します。
これは非同期モデルなので呼び側は同期完了を待ちません。このため性能が
非常に向上し、ターゲットCPUへのオーバヘッドもおおまかには割り込み
と同等程度です。
IPIメッセージは高速割り込みのように動作します...つまり(クリティカル
セクションに左右されますが)ターゲットCPUで動いているものは何でも
プリエンプトし、実行し、そのあともともと動いていたものに復帰します。
このためIPI関数はいかなる理由であってもブロックすることは許されません。
IPIメッセージはスレッドをスケジュールしたり他のCPUに属しているメモリを
解放するといった処理をするのに用いられます。
IPIメッセージ処理は少なくとも6個の主なLWKTサブシステムで多用されています。
それらには、CPUごとのスレッドスケジューラ、slab allocator、メッセージ
サブシステムが含まれています。IPIメッセージ処理はDragonFlyに本来的に
適応したサブシステムなので、Big Giant Lockを必要とせず、使用してもいません。
全てのIPIベースの関数は従ってMPセーフである必要があります(そうなっています)。
NGNG
これって、ひとつの資源に対して単一のCPU&スレッドを張り付けることで、排他制御をシンプルにする
というおおざっぱな理解であってる?
スレッド切替が頻繁に発生してパフォーマンスで劣るんじゃないかとか、
スレッドの優先度制御をどうするかとか、いろいろ問題もありそうだけど、
おらワクワクしてきたぞ。
というおおざっぱな理解であってる?
スレッド切替が頻繁に発生してパフォーマンスで劣るんじゃないかとか、
スレッドの優先度制御をどうするかとか、いろいろ問題もありそうだけど、
おらワクワクしてきたぞ。
NGNG
IPIベースのCPU同期サブシステム
LWKTモデルは、汎用でマシンに依存しないCPU同期APIが備わっています。
このAPIによって、デリケートなデータ構造にアクセスしている状態の
ターゲットCPUを既知の状態に移行させることができます。このインタフェイスは
主にMMUのページテーブルを更新するのに使用されています。たとえば、
もし適切なロックを確保していたとしても、ページテーブルエントリの
モディファイビットをテスト、クリアしたあとにページテーブルエントリを
削除するのは安全ではありません。これは、他のCPUで動作しているユーザランド
プロセスがそのページを読み書きする可能性があるからで、その場合向こう側のCPUが
TLBを書き戻すのとページテーブルエントリをクリアしようとする処理の間に
レース状態が生じます。適切な解決は、ページテーブルエントリへ書き戻す
可能性のあるCPU(つまりpmapのpm_activeマスクでセットされている全CPU)を
まず既知の状態に移行し、変更処理をしてから、各CPUのTLBを無効化するリクエストに
よってCPUを解放するという方法です。
DragonFlyに備わっているAPIにはデッドロックがありません。複数のCPU同期処理が
並行に動作することが可能で、これはCPU同期イベントの主導権を握っているスレッド
にもあてはまります。これは柔軟なしくみですが、CPU同期インタフェイスは制御
された環境で動作するため、コールバック関数はIPIメッセージサブシステムで
用いられるものとちょうど同じように動作する傾向にあります。
LWKTモデルは、汎用でマシンに依存しないCPU同期APIが備わっています。
このAPIによって、デリケートなデータ構造にアクセスしている状態の
ターゲットCPUを既知の状態に移行させることができます。このインタフェイスは
主にMMUのページテーブルを更新するのに使用されています。たとえば、
もし適切なロックを確保していたとしても、ページテーブルエントリの
モディファイビットをテスト、クリアしたあとにページテーブルエントリを
削除するのは安全ではありません。これは、他のCPUで動作しているユーザランド
プロセスがそのページを読み書きする可能性があるからで、その場合向こう側のCPUが
TLBを書き戻すのとページテーブルエントリをクリアしようとする処理の間に
レース状態が生じます。適切な解決は、ページテーブルエントリへ書き戻す
可能性のあるCPU(つまりpmapのpm_activeマスクでセットされている全CPU)を
まず既知の状態に移行し、変更処理をしてから、各CPUのTLBを無効化するリクエストに
よってCPUを解放するという方法です。
DragonFlyに備わっているAPIにはデッドロックがありません。複数のCPU同期処理が
並行に動作することが可能で、これはCPU同期イベントの主導権を握っているスレッド
にもあてはまります。これは柔軟なしくみですが、CPU同期インタフェイスは制御
された環境で動作するため、コールバック関数はIPIメッセージサブシステムで
用いられるものとちょうど同じように動作する傾向にあります。
レスを投稿する
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★5 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で ★2 [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 【正論】有識者「高市早苗に合理的配慮をしなかった野党が悪い」 [175344491]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 日経平均、49000円割れ 国賊高市を許すな ★2 [402859164]
- 吉村はん「高市さんは発言を撤回する必要ないですよ。中国の大阪総領事が謝罪すべき」 [256556981]
- 高市政権「中国さん、日本はいつでも対話に応じるで」 [834922174]
