真夜中のmalloc

mallocの詳しい話が聞けたので集めました。
23
いわた @iratqq

@mskwt そっちは詳しく知りませんす。sys/kern/kern_malloc.cありかな。

2011-02-13 01:43:49
野良猫@がんばらない @mskwt

@iratqq Windows だと、基本 64KiB 単位管理 (個別に PTE の Flag 設定は可能)、Cache Manager は 256KiB 単位なので、本当の意味で独立した論理 4KiB の確保って難しい

2011-02-13 01:46:55
くまぎ @kumagi

mmapは通常mallocより遅いから使わないほうが良いのではなかろうかと勝手に思い込んでた。僕の知ってるmalloc実装はみんな「予めmmapで取ってきたメモリを高速に切り分ける」事を目的としているようだったので。

2011-02-13 01:34:31
くまぎ @kumagi

@iratqq 1バイトでも欲しくなるごとに新しいページを取ってくる、という意味でしょうか…?

2011-02-13 01:37:46
いわた @iratqq

@kumagi ページをまるっと取ってきて、チャンクを返すイメージ。

2011-02-13 01:40:15
野良猫@がんばらない @mskwt

@kumagi OS の実装に激しく依存するかと…。まともな実装なら OS のお世話になる回数はほとんど変わらないんじゃないかな

2011-02-13 01:32:59
くまぎ @kumagi

@mskwt え、それは4バイトのメモリ確保をmmapで1万回呼ぶかmallocで一万回呼ぶかでもあまり変わらない、ということでしょうか。

2011-02-13 01:38:39
野良猫@がんばらない @mskwt

@kumagi 「その malloc が空になったヒープ領域を OS に返却してくれるのであれば変わらない」

2011-02-13 01:40:49
いわた @iratqq

otto-malloc遅いと思ってたけど、fx3.xで顕著に遅いだけだったような気がする。

2011-02-13 01:44:40
野良猫@がんばらない @mskwt

もし Windows で 4byte の領域を 1万回 (=10k) 確保したとして、40k回 なのでシステムの管理表的には 1度しか変わらず、アクセスされるまで変わらんのは malloc も同じなので知らん。個別の mmap なら資源不足に陥る

2011-02-13 01:45:22
くまぎ @kumagi

@mskwt 40k回…?個別のmmapってのはmmapを1万回呼び出すのとどう違うんでしょうか…?

2011-02-13 01:49:30
野良猫@がんばらない @mskwt

@kumagi おおう。そっちですか。それどんな OS でも無駄か無理

2011-02-13 01:50:21
くまぎ @kumagi

@mskwt なるほど、ありがとうございます。

2011-02-13 01:50:53
いわた @iratqq

mallocのたびにmmapしたら死んじゃう

2011-02-13 01:46:27
くまぎ @kumagi

@iratqq ですよね…。凄まじい無駄遣いになりそうな気が…。

2011-02-13 01:50:25
野良猫@がんばらない @mskwt

malloc の持つ領域を mmap から取ってくる話かと思った。。

2011-02-13 01:52:20
超電磁ねこきっく @finalfusion

うーむ。並行して複数の興味深いやり取りがなされている

2011-02-13 01:53:12
いわた @iratqq

@kumagi ここらへん読むとわかるかもしれない http://bit.ly/fH5gZS「OSからページをもらうにはどうするのか」をmmapに読み換えて

2011-02-13 01:52:06
超電磁ねこきっく @finalfusion

@iratqq mallocの実装には mmap が使われているとか見たので・・・

2011-02-13 01:59:58
野良猫@がんばらない @mskwt

malloc とはそういうものだ。という割り切りができればいいのだけれども、そうじゃないので小細工…メンテ無理! → 標準 malloc を xxx malloc に変えたら性能が xxx% 向上! という話はしばらく続くのかな

2011-02-13 01:51:24
野良猫@がんばらない @mskwt

全員が tc ほげを使い始めたら資源が…ごにょ

2011-02-13 01:54:12