■
書くことがたまってしまっている間にPCを買い替えてしまったりでさらに遅れています(ノ_・。)
各種OSの標準的なタイムスライス
どこで何を参考にしていたか失念していたのですが、以下の資料を発見しました。
「スレッドとプロセス 本題:スケジューリング(田浦健次郎)」の28ページに「少なくとも1-10ms程度に一度,OSがCPUをアプリケーションから奪う「機会」を保障する」とあります。
以前見たものとは違うとは思うのですが、いちおうわたし以外にも似たようなことを言っている人がいるということで。
本当はそれぞれのOSの設定情報にアクセスする方法を並べる方がいいと思うのですが、いまのところに自分にその必要性がないので見つけられたらまとめることにします。
OS | 情報源 |
Windows | 不明 |
Linux | カーネルソース |
*BSD | カーネルソース |
Solaris | OpenSolarisのカーネルソース |
- 参考資料
「スケジューリング(Wikipedia)」
「Scheduling Threads」
とりあえず今見つけられたWeb上のものを。
並列処理レベルの実用的な分類:TLP(Thread-Level Parallelism)
項目 | 説明 |
インターフェース | カーネルスレッドライブラリAPI(Pthread、Win32 thread、JAVA threadクラス、OpenMPなど) |
処理対象 | 実行中のプロセス空間内のメモリ上の全てのデータ |
処理対象データ量 | 一つのプロセス空間がアクセス可能な上限のメモリ、数〜数十GB(メモリ)とI/O |
実行主体 | 一台のコンピュータ上のSMP構成の全てのプロセッサ |
同期手法 | カーネルスレッドライブラリが提供する機能とその組み合わせ(ミューテックス、セマフォ、条件変数、イベントなど)) |
同期間隔 | 1〜数百ms(10msが目安) |
期待できる性能向上率範囲 | 数倍〜数十倍((一台のコンピュータ上で実現できるプロセッサ数とメモリ、ストレージ(とストレージI/O)の性能によって制限される) ) |
制限要素 | 一つのプロセス空間から利用できるハードウェアリソースしか利用できない |
TLPは難しいとよく言われるのですが、どの辺が難しいのかを考えてみました。
TLPが並列処理の一種であり、並列処理のプログラムが想定した通りに動作するために必要な要件を揃えればその通りに動くというのはTLPにおいても同じです。でもよく考えるとILPやPLPでは気にしなくていいことをTLPでは気にする必要がいくつかあることに気付きました。
- 「データの更新(メモリの読み書き)の実行順序を気にする必要がある」
というのは当たり前のことですが、ILPやTLPではさほど意識しなくてもいい状況があります。 ILPの並列計算においては最終的にはコーディングした順序にシリアルに実行される(されたのと論理的に同じ状態になる)ことをハードウェアが保証しています。したがって同期を考慮する必要はありません。PLPの通信においては明確に意図して実行しなければ通信は不可能です。つまり他のプロセスの情報を不意に破壊してしまうということはありません。並行プログラミング上の誤りは「通信の失敗」という形で表れます*1。
- 「どのスレッドがいつ実行されるかわからない」
これは並行プログラミングの本質なのでそれで問題がないようにする必要が元々あるのですが、Windowsだったりすると秒単位でCPU時間の割り当てが来ないことがあったりする(もしくは自らそういう状況を自分で作り出せてしまう)というのはあまり自然に意識することではないのではないでしょうか。TLPはAPIリファレンスだけをみると無制限に何でもできる、性能による制限はないように見えるのですが、実際にはコンテキストスイッチの時間当たりの切り替え回数、他のスレッドが消費するCPU時間などの性能的な要素によって動作が制限されます。
GUIのプログラムなど人間に対するUIを提供するプログラムにおいては人間の入力から出力までの処理にかかる時間を小さくする努力をし、処理が停滞する原因になるロックの粒度を小さくする((複数のスレッド同士が接触する部分という意味でサーフェイスを小さくする、という言い方もします))ということを意識した方がいいでしょう。
*1:互いに書き込む領域をプロセス共有メモリなどで作成すればTLPに似た状況を一部作れますが、TLPのように無制限ではありません
あけましておめでとうございます
今年もよろしくお願いしますo(._.)o
去年に書こうと思って年を越してしまった記事が多いので、今年はそれを消化するところから始めようと思います(ノ_・。)
ヽ(*'□')ノ 我々はハッカーだ ネットワークに浸透する 制限は無意味だ
というスタートレックの物まねが思い浮かびました(・・
ソフトイーサ「MobileFree.jp VPN実験サービス」を開始
接続可能なコンピューターがある限り、ハッカーに対して技術的な制限は無意味なのです(・・
でもソフトイーサってそもそも無償公開されていたようなとひさしぶりに配布サイトを覗いたら以下の報道発表資料が。
SoftEther 1.0 のダウンロード配布終了とサポート終了のお知らせ
PacketiX VPN 2.0 の更なる開発のためには、商用ベースでの利潤追求が最重要課題であることに対して、旧バージョンの無償ダウンロード配布が必ずしも追い風とはなっていないこと。
理由に上記が書かれているというのを見るに、現実は厳しいということを感じてしまいますね〜。
VPNは興味があるというか、自宅にVPNゲートウェイを設置して利用中です。コストパフォーマンスや接続性を重視したいので現在はPPTPを利用中、将来的にはL2TPに移行希望でPacketiXには興味がないです。そういうニーズに対しては既存の家庭用ルーターの改造ファームウェアであるDD-WRTが既にPPTPとOpenVPNの機能を搭載しており、他のVPNソフトウェアに先行されているような気がします。
ハードウェアアクセラレータに対応できる暗号アルゴリズムを採用する、もしくはルータの機能として提供されることのどちらかを満たさない限りはわたしの利用候補になることはない感じです。
『「貧乏だけどウヨな若者」とか「金持ちだけどサヨな老人」が誕生してきている気がする』の解釈
それを踏まえて
「貧乏だけどウヨな若者」とか「金持ちだけどサヨな老人」が誕生してきている気がする
を考えてみます。
まず単語を置き換えますが、「ウヨ」=保守、「サヨ」=革新(=自由主義)で問題ないと思います。世界的な、もしくは日本語の辞書的な意味としての右翼、左翼ではなく、あくまで日本の若者、老人の思想に対応する置き換えとしてです。
まず今の日本の現状ですが、かなり自由主義に偏っています。生まれてすぐに洗礼を浴びせられる「学歴社会」というのが、個人の過去や属性がほとんど考慮されない世界です。偏差値という数字は現実の問題そのものではなく、現実の問題を捨象した問題を解く能力か、現実の問題を解決する基になる潜在能力を相対的に測ったものです。
社会に出ても成果主義などの自由主義的な管理に晒されます。製造業の世界で特に浸透しているISO9001も、そのエッセンスである自然科学的管理はまさに自由主義的な管理手法です。ニュースで話題されることも多くなりましたが、現在の若者が人材派遣で仕事に従事する場合、ほぼ間違いなく自然科学的管理で管理された業務を行うことになります。そこでは標準化された手順に従い黙々と作業するだけで、当人がどのような人間であるかは考慮されません。標準化の成果として、並以上の目標でありながら標準的に達成できると設定された成果を達成できるのは当たり前になり、ほめられることもありません。
リストラ、という熟練者の解雇を意味する言葉も極当たり前に使われていますが、これは実はすごいことです。自然科学的管理の技術により、高効率である手順と品質保証の仕組みにより個人レベルの熟練の価値と、機械的なシステムに裏付けられたセキュリティの仕組みの事故防止と責任の所在の明確化により通常の個人レベルの忠誠心の価値が失われたということを意味します。これもまさに保守的な価値観の崩壊です。「一所懸命」などという言葉が美徳になることはなく、自らの判断により自己の能力に照らして最適な場所で最善の成果を上げることだけが求められています。
さて、そこで再び元記事の中で引用されている文から一部を抜き出してしてみます。
カネの無い若者は大人が築いてきた体制を批判するモノである。
カネの有る老人は自分の築いてきた体制を保守するモノである。
現代の日本は自由主義で「カネの有る老人」というのはその体制を築いた上で成功を収めた人間です。「カネの無い若者」というのはその体制の中で成功をおさめていない人間です。付け加えると自由主義に反発して保守主義的な主張をしている場合、幸福感もないはずです。
もう一度引用しますが、結論として
「貧乏だけどウヨな若者」とか「金持ちだけどサヨな老人」
というのはわたしからすると日本の社会の現状としては極自然だと思います。
蛇足気味になりますが、右翼というと国粋主義だとか危険思想だと思われがちですが、現代の若者の「右翼思想=保守主義」というのは*1自由主義的な管理体制の下で無視される自分の存在を認めてほしいという欲求を表明しているだけだと思います。社会的全体を俯瞰すれば必ず存在する標準以下の能力は全く評価されず、人格や忠誠心として評価されるはずの態度も価値を認められない社会においては、組織への貢献が評価され、あなたがあなたであるのが最善であるとされる*2保守主義を政治的に支持するというのは自然な流れだと思います。誰だって他人に何かしら認められたいという社会的欲求はあるはずです。