並カン

行ってきた。手元のメモから色々と拾っておくと…

キャンセルという単語が出た。そう、キャンセルって結構難しいんだよな…。自分でプログラム書いてると、キャンセルとかどうでもいいと思ってしまいがちだが、svnとか使った瞬間にCtrl-Cで止まらないプログラムは糞!とか考えてしまいがちである。トランザクショナルなものは適用可能な箇所がいくつかありそうだよね…

POSIXのmutexは重くない。あとで実測しようと思ってたが、めんどうになった。その昔、EnterCriticalSectionはCPU1個の場合と2個の場合とで挙動が違うよ、どっかのスレで見かけて、それとその周辺の議論が面白かった気がしたが、どこで見たか忘れた。

STMの話で、「デッドロックしないとかインチキだ!」と、id:hayamizさんにイチャモンを付けるだけの簡単なお仕事をした。
STMは、トランザクション開始が入れ子になっていても、それ全体で一貫性を保証するものなので、僕の意見は根本的に無理解から来てるのだという結論だった。STMは性能よりも、デッドロックしない安心のために使うのが正しいということなんだと思う。

Lock Freeの話。ロックとかよりもメモリ解放のほうが問題になるというような。

Haskellの話。なんか迷走してるな…という印象だった。


あと、あまり関係無いけど、 http://d.hatena.ne.jp/tanakmura/20090728#1248790658 memcachedの悪口についてshinhさんにつっこまれるなどした。

僕の理解だと、「ローカルよりネットワークのほうが速いとか頭おかしい」「GBよりも大きいデータを扱うサーバってそんなにあるのか?」ぐらいの感じだったが…

  • ネットワークといっても10GだとHDDよりかなり速い
  • レイテンシに関しては、外部ネットワーク律速してるので多少遅いのは問題ない。
  • 動画扱うとすぐにデータサイズ大きくなる
  • HDDはログ出力などと重なると性能落ちたりする。これが結構予測しづらい。

というようなことだった。

とか聞くと、こういうのはボトルネック解析して、それぞれについて対策を講じるべき!そうしないのは気持ち悪い!
とか思ってしまうのだが、「とりあえずmemcachedにして、あとはマシン増やせばスケールするからお手軽ですね」というのが重要だというのも、まあ、理解できて。世の中難しいな。



人間は2週間働くと、50万円であり、一方、マシン1台用意するのは、20〜40万くらいである。さて、この時に安いのはどちらでしょうか?と言ったときに、さて、どちらでしょうか。


人間を使ってソフトウェアをチマチマと最適化するようなのは、ハードウェア買うよりお金がかかるのである。
富豪的プログラミング、貧乏性プログラム、という言葉があるが、今は、その概念が逆転してしまってるのだろうな。ビットレベルで最適なメモリ配置、なんてのは、お金持ちにだけ許された酔狂なんだと思う。


これはおそらく並列化にも言えて、ハードウェア買うより人件費が高いうちは、ソフトウェアを並列化するなんていうのは一生普及するわけがなくて、つまり、並列化の普及を阻害しているのはお前達の給料だったのだよ!!!

俺が会社作ったら、以上の理由により、安い給料で社員を働かせることにするね。みんな並列化の未来に貢献するんだ!!