真夜中のmalloc

mallocの詳しい話が聞けたので集めました。
23
K. Sakaguchi @pi8027

そういえば mmap を使ってメモリ確保できるよねっていう有名な話がありますけど、あれって malloc で同じサイズ取ってくるのに比べて何か利点あるんですか。

2011-02-12 23:56:40
K. Sakaguchi @pi8027

malloc が mmap 呼んでるなら変わらないんじゃね……。

2011-02-12 23:56:56
K. Sakaguchi @pi8027

メモリプール自分で組むのに malloc 使ってどうするんだよって、まあそうか。あれ

2011-02-12 23:58:30
K. Sakaguchi @pi8027

follower 900人もいるっていうのに誰も答えないとか Twitter オワコン。やめようかな

2011-02-13 00:34:13
Hideyuki Tanaka @tanakh

@pi8027 大きなサイズだとmmap自動で使うmalloc実装が多いので、あんまり変わらんです。小さいサイズだとmmapはよくないので、結局あんまり利点はないです

2011-02-13 00:35:05
K. Sakaguchi @pi8027

@tanakh なるほど。自前で固定長メモリプール作るとかでも malloc でいいという事でしょうか。

2011-02-13 00:35:44
K. Sakaguchi @pi8027

@tanakh ありがとうございます。Twitter やめずに済みました。

2011-02-13 00:36:53
超電磁ねこきっく @finalfusion

@pi8027 実装が色々あるんでしょうけど、mallocのように実はその大きさを確保できてないけど正常な値を返すようなことがないとか? あと物理的に連続するのが保証されるんでなかったっけか>mmap 嘘書いてたらごめんなさい

2011-02-13 00:38:47
南極寿星 (Canopus) @nankyokujusei

@pi8027 mmap を使うと実行速度が malloc より速くなることがあります。理由についてはケンケンガクガクで、わたしもはっきりとは知りません。限界までの高速性を求められる科学計算では、考慮されることもあるみたいです。

2011-02-13 00:49:55
K. Sakaguchi @pi8027

@nankyokujusei 固定長メモリプール作りたいという話なのでそんな頻繁に呼ぶわけでもなく、そうすると malloc でいいんでないかなと思います。

2011-02-13 00:51:22
K. Sakaguchi @pi8027

ページとかあんまり意識してないな。どう考えればいいんだろうあれ

2011-02-13 00:52:11
K. Sakaguchi @pi8027

なんか実際のメモリ上の配置と、プログラムから見えている配置が違うという話は知っているけれど、そもそもページのサイズの都合考えてプログラム書くっていうのはどういう

2011-02-13 00:53:03
K. Sakaguchi @pi8027

あーまあ偶然そうなっているという話か。まあでも malloc の実装賢いと信じますよ。mmap は使い方思い出すのが大変だ。

2011-02-13 00:54:58
くまぎ @kumagi

mmapをmalloc替わりに使うと無駄にOSのお世話になる回数が無駄に増えてキャッシュに良くないのでは?(OSよく知らない人

2011-02-13 01:11:22
K. Sakaguchi @pi8027

@kumagi もちろん mmap 使うケースっていうのは、自分でメモリプールを書くだとか、それに近いメモリの使い方をするとかだと思います。

2011-02-13 01:35:51
くまぎ @kumagi

@pi8027 そうですね、mallocでのハンドリングに不満があるときに取る行動だと思います。

2011-02-13 01:39:18
くまぎ @kumagi

@mskwt あ。http://twitter.com/#!/pi8027/status/36438542758453248 についての発言です。mmapがどういう挙動してるのか知らないけれど、カーネルレベルの処理を頻繁に呼び出すとパフォーマンスが劣化するんじゃないかな、と。

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

obsdのmallocはすべてmmap経由。

2011-02-13 01:22:44
いわた @iratqq

@kumagi ページ毎に確保すればおk。

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

@iratqq それ BSD だと効率いいの? (なぜか BSD で振る)

2011-02-13 01:33:45
いわた @iratqq

@mskwt 悪いけどobsdは価値があると思っているらしい。割り当てるアドレスをランダムにできるとかセキュリティ的な観点からですな。

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

@iratqq あれ、obsd のメモリ管理粒度 (vm側) ってページ単位でしたっけ??

2011-02-13 01:39:58