付録A 付録


A.1. mallopt

mallopt は、プログラムによる malloc メモリアロケータの動作の変更を可能にするライブラリーコールです。

例A.1 アロケータヒューリスティック

アロケータには、昔からあるオブジェクトと最近できたオブジェクトを見分けるヒューリスティックがあります。前者に対しては mmap を割り当てようとし、後者には sbrk を割り当てようとします。
これらのヒューリスティックを上書きするには、M_MMAP_THRESHOLD を設定します。
マルチスレッドのアプリケーションでは、アロケータは arenas にある既存のロック競合に対応して複数の arenas を作成します。これより、いくつかのマルチスレッドのアプリケーションでは、メモリ使用量が増えるという代わりに、パフォーマンスが大幅に改善する場合があります。これをコントロールしておくには、mallopt インターフェースを使って作成可能な arenas 数を制限します。
アロケータには、作成できる arenas の数に限りがあります。32 ビットのターゲットの場合、2 * # のコア arenas を作成します。64 ビットターゲットの場合、8 * # コア arenas を作成します。mallopt を使うと、開発者はこれらの制限を無効に出来ます。

例A.2 mallopt

9 以上の arenas が作成されないようにするには、以下のライブラリーコールを発行します。
mallopt (M_ARENA_MAX, 8);
mallopt の最初の引数は、以下のものが可能です。
  • M_MXFAST
  • M_TRIM_THRESHOLD
  • M_TOP_PAD
  • M_MMAP_THRESHOLD
  • M_MMAP_MAX
  • M_CHECK_ACTION
  • M_PERTURB
  • M_ARENA_TEST
  • M_ARENA_MAX
上記の引数の特定の定義は、http://www.makelinux.net/man/3/M/mallopt で確認できます。

malloc_trim

malloc_trim は、アロケータに未使用のメモリをオペレーティングシステムに戻すように要求するライブラリーコールです。これは、オブジェクトが解放済みの場合、通常は自動で行われます。しかし、小さいオブジェクトを解放している場合、 glibc がメモリを即座にオペレーティングシステムに戻さないこともあります。この理由は、メモリをオペレーティングシステムからリリースさせて割り当てるのは高くつき、空きメモリは来たるべきメモリ割り当て要求を満たすために使用できるからです。

malloc_stats

malloc_stats は、アロケータの内部状態を stderr にダンプするために使用されます。mallinfo はこれに似ていますが、代わりに状態を構造体に置きます。

追加情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.