タグ

mallocに関するgrayzoneのブックマーク (4)

  • mod_mrubyのメモリ問題をvalgrindで調査の上jemallocで改善

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyはmrubyのmrb_stateをApacheのサーバプロセス上で使いまわすアーキテクチャをとっています。基的にプロセスは起動しっぱなしなのですが、リクエストを大量に処理すると、プロセスのメモリがどんどん太っていく問題がありました。 これは、mruby-uv等でも報告されており、どうにか改善したいと思っていました。そこで、twitter上でいくつかmatzさんとやり取りしながら、valgrindでメモリのLEAKとHEAPを調査の上、mallocのフラグメントを疑い、jemallocでmallocをフックするとどのようにメモリ使用量が改善するかを実験しました。 valgrindでApacheをデバッグ valgrindでA

    mod_mrubyのメモリ問題をvalgrindで調査の上jemallocで改善
  • MEM04-C. サイズ 0 のメモリ割り当てを行わない

    MEM04-C. サイズ 0 のメモリ割り当てを行わない 要求されたサイズが 0 の場合、メモリ割り当て関数 malloc()、calloc() および realloc() の動作は処理系定義である。C 標準 [ISO/IEC 9899:2011] セクション 7.22.3 には次のように記載されている。 要求された領域の大きさが 0 であるとき、その動作は処理系定義とする。ただし、null ポインタを返すか、又は 0 ではない大きさを要求したときと同じ動作(このとき、返されたポインタをオブジェクトのアクセスに使用してはならない)、のいずれかでなければならない。 さらに、0 バイトが要求され、割り当て関数が正常終了したときに割り当てられる記憶域の容量は未規定である。C 標準、セクションJ.1「未規定の動作」の 41 項を参照のこと。 メモリ割り当て関数が null 以外のポインタを返した場

    MEM04-C. サイズ 0 のメモリ割り当てを行わない
  • jemallocとかLD_PRELOADについて調べてみた - As a Futurist...

    何周遅れか分かりませんが調べてみました。僕の理解は浅いので間違っている可能性大ですが自分用にメモしておきます。 malloc とは? C 言語ではmallocという関数を使って、使いたいメモリを実行中に割り当てることができます。例えば Wikipedia によればこんな感じ(適当に main 足してます)。 #include <stdlib.h> int main() { /* 10個のintの配列のためのメモリを確保 */ int *ptr = malloc(sizeof (int) * 10); if (ptr == NULL) exit(EXIT_FAILURE); /* メモリを確保できなかったので、exit */ /* 確保成功 */ } malloc – Wikipedia これを素朴に gcc でコンパイルすると、glibc(libc.so.6)が動的にリンクされます(ここら

    jemallocとかLD_PRELOADについて調べてみた - As a Futurist...
  • Lockless Inc. Low level software to optimize performance

    Optimize your Software It is a simple step to speed up your software. No source code changes are required. Lockless MPI seemlessly replaces your system MPI implementation, and you reap the performance benefits. Lockless MPI Released Version 1.2 of the Lockless MPI has just been released. It is optimized for modern 64bit multicore systems, and supports programs running on Linux. There are bindings

  • 1