タグ

mallocに関するclavierのブックマーク (17)

  • Rustで実装するmalloc - NTT Communications Engineers' Blog

    この記事は、NTT Communications Advent Calendar 2021 21日目の記事です。 はじめに こんにちは、イノベーションセンターの鈴ヶ嶺(@suzu_3_14159265)です。普段は、クラウド・ハイブリッドクラウド・エッジデバイスなどを利用したAI/MLシステムに関する業務に従事しています。日は、Rustで動的メモリ確保(dynamic memory allocation)のmallocを実装してPythonvimを動かしてみようという内容をお届けします。 また、去年もRustネタのアドベントカレンダーを書いているのでぜひ見ていただけると嬉しいです! NTTコミュニケーションズ Advent Calendar 2020 Rustで実装するNetflow Collector 実装するmallocのアルゴリズム 今回実装するmallocのアルゴリズムは小さな

    Rustで実装するmalloc - NTT Communications Engineers' Blog
  • mimalloc のメモリ管理 - Qiita

    Microsoft の mimalloc は面白い割り切り方で、小さいソースコードで高速なアロケータを実装しています。 確保するメモリブロックのサイズを、 Small (~8KiB), Large (~512KiB), Huge (512KiB~) の3つに分類し、 Small と Large は同じアルゴリズムで管理し、 Huge は OS 任せにして、 Small と Large は同じアルゴリズムをうまく利用しています。 基礎 OSはpage (x86では基 4KiB) ごとにメモリをプロセスに割り当てています。 しかしアプリケーションではずっと小さいメモリブロックが必要になることが多くあります。また、必要になるたびに毎回OSからメモリを割り当ててもらうのはパフォーマンスも悪いです。 mimalloc やその他の malloc 実装 (以降 malloc と呼びます) は OS か

    mimalloc のメモリ管理 - Qiita
  • 革命の日々! MALLOC_TRIM_THRESHOLD_ と MALLOC_MMAP_MAX_ パラメタについて

    どうもあまり有名ではないらしいので、ここで書いてみる。 http://mkosaki.blog46.fc2.com/blog-entry-241.html で書いた事とほぼ同じだけれど。 Linuxにおいて、CPU負荷を測定するベンチマークでは以下の環境変数を設定すると往々にして性能があがる。 % setenv MALLOC_TRIM_THRESHOLD_ -1 % setenv MALLOC_MMAP_MAX_ 0 MALLOC_TRIM_THRESHOLD_ はOSに未使用になったメモリを返却する契機をあらわしていて、-1は決して返却しない事を表す。 MALLOC_MMAP_MAX_ は最大mmap数で0は決してmmapせず、どんなに大きなメモリでもbrkを使ってメモリを取る事を意味する。 で、性能に効くのは(たいてい)MALLOC_MMAP_MAX_のほう。 glibcはアンチフラグ

  • Memory Allocators 101 - Write a simple memory allocator

    Code related to this article: github.com/arjun024/memalloc This article is about writing a simple memory allocator in C. We will implement malloc(), calloc(), realloc() and free(). This is a beginner level article, so I will not spell out every detail. This memory allocator will not be fast and efficient, we will not adjust allocated memory to align to a page boundary, but we will build a memory a

    Memory Allocators 101 - Write a simple memory allocator
  • mallocの動作を追いかける(mmap編) - Qiita

    はじめに malloc動画見てますか?>挨拶 こんな記事に興味持つような人はみんなmalloc動画見てる人たちばかりだと思いますが、僕はmalloc動画見るまでは「え?メモリの管理ってOS側じゃなくてユーザランドでやってたの?」って感じでした。ここでは僕みたいなmalloc初心者のために、mallocの動作を実際に追いかけて見ようと思います。 mallocの動作を追いかける(mmap編) ← イマココ mallocの動作を追いかける(prev_size編) mallocの動作を追いかける(main_arenaとsbrk編) mallocの動作を追いかける(fastbins編) mallocの動作を追いかける(マルチスレッド編) mallocの動作を追いかける(環境変数編) mallocについて mallocについては、それこそmalloc動画とか、このへんを見ていただければと思うけれど、要

    mallocの動作を追いかける(mmap編) - Qiita
  • glibcのmalloc(3)とLinuxカーネルのovercommitとOOM - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    この記事はLinux Advent Calendar 2015の23日目です。 glibcのmalloc(3)とLinuxカーネルのovercommitとOOMの関連でも見てみようと思います。Linuxカーネルのシステムコールにはmalloc(3)的なものはないので、mmap(2)、brk(2)が使われます。 今回知りたかったのは、どこでovercommitを許可しているのか?というところと、どのタイミングでOOMが発生するのかという2点です。 OOM発生時の挙動についてはsatoru_takeuchiさんの覚書(2015-12-03)に詳しく書かれていますので、こちらを参照してください。 glibcのmalloc(3)に関してはがちゃぴん先生のmalloc動画を見ましょう。 今回見ているglibcのバージョンは2.22でカーネルは4.3です。 まずはmalloc(3)の大まかな処理を見ま

    glibcのmalloc(3)とLinuxカーネルのovercommitとOOM - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 進撃のmalloc #kernelvm - by shigemk2

    2014-05-25 進撃のmalloc #kernelvm 勉強会 malloc - Wikipedia ガチャピン先生 進撃のmallocってなんだ gblicのmalloc近辺の開発にかかわる MM Summit Ruby core commiter(コミット率TOP10コミッタ) @kosaki55tea LKMLでのdisりあい 殴り合い [www.youtube.com/watch?v=cjaRZEtDTxc:embed] ebizzy | Free Development software downloads at SourceForge.net N個のスレッドがs病の間に何回malloc memcpy freeが出来るかを測定 カーネルでは時間をあまりってない mallocバグ知識 2行消したら20倍高速化 Linuxキーワード - glibc とは:ITpro 1スレッ

  • jemalloc について調べたのでまとめた - zonomasaの日記

    ※この記事は3回シリーズのうちの一つ jemalloc について調べたのでまとめた - zonomasaの日記 続 jemalloc について調べたのでまとめた(ビルドと組み込み方法) - zonomasaの日記 jemalloc の解析機能 - zonomasaの日記 photo by mutednarayan jemalloc とは jemalloc は、標準ライブラリで定義されているmalloc, free 等のメモリアロケーション APIの実装である。 jemalloc : 公式ページ jemalloc は2005年より、Jason Evans によって開発されており、SMPでのスケーラビリティのためにFreeBSD のlibcに取り込ま標準アロケータとなっている。 その他にも、Facebook の内部や、KVS のRedis、fluentd などにも取り込まれている。 具体的には

    jemalloc について調べたのでまとめた - zonomasaの日記
  • ゲーム開発におけるメモリアロケーションの実装について - Qiita

    inline void* operator new( std::size_t size, TGL::Memory::AREA_TYPE newFlag,const char* pszFile,s32 nLine ) throw() { void* ptr = TGL::Memory::Allocater::Malloc( size ,newFlag,pszFile,nLine); # if 0 # ifdef _USE_EXCEPTION // 例外処理を許可しているときのみコンパイル if ( NULL == ptr ) { throw std::bad_alloc(); } # endif # endif return ptr; } inline void* operator new[]( std::size_t size, TGL::Memory::AREA_TYPE newFlag

    ゲーム開発におけるメモリアロケーションの実装について - Qiita
  • どうしてメモリはスワップするのか!?

    こんにちは。斎藤です。 最近、新しいスキー板が欲しいなと思っています。現在使っているOGASAKAの板は5年目に入り、メーカーからこれ以上はチューンナップ(メンテナンス)はできないよ、と言われてしまいました。もし、次に買うなら、スノーボーダーの人と一緒にパウダーに飛び込みやすいセミファットタイプが良いのかなと考えています。皆さんのオススメ、ぜひ教えてください。 さて、今日はLinux Kernel上でのメモリ管理、特にページ回収(Page Reclaim)とスワップに絞り、「スワップの理由」「ページを回収する仕組み」そして「スワップの様子を観察する」の3点に分けてお話しします。「スワップするのが気持ち悪い」と考えている方は少なくないと思いますし、私もそう考えていた時期がありました。しかし、それは当に悪い事なのか、今回掘り下げて行きます。 ※主な対象Kernelは2.6.32(Red Ha

    どうしてメモリはスワップするのか!?
  • Linuxのメモリまわり - tmtms のメモ

    ちょっと前から groonga を使うとプロセスサイズが肥大化するのが気になっていて、メモリ関係を色々調べていたのですが、そこでわかったことなどを書いときます。 malloc() しただけではOSのメモリは使用されない メモリを1GB獲得するだけのこんなプログラムを作って実行してみます。 #include <stdlib.h> #include <unistd.h> #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char *p; char buf[1024]; int i; p = malloc(1024*1024*1024); gets(buf); for (i=0; i<1024*1024; i++) memcpy(p+i*1024, buf, sizeof(buf)); pause(

    Linuxのメモリまわり - tmtms のメモ
  • GitHub - keijiro/ios-resident-memory-test: iOS における malloc の挙動について

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - keijiro/ios-resident-memory-test: iOS における malloc の挙動について
  • メモリリークとは何か - kuenishi's blog

    メモリリークに悩まされている技術者は多いだろう。メモリリークが嫌でGCという技術が開発されたといっても過言ではないし、歴史的にはC++からJavaへシフトが起きた大きな理由のひとつといっていい。Unix系の簡単な定義でいえば、ヒープ領域を指すポインタ(アドレス)をロストしてしまえばそのメモリはもう漏れたといってよい。たとえばこういったコードだ。 struct { int i; char c; } spam; int main(){ void* p; int i; for(i=0; i<1024; ++i){ p = malloc(sizeof(struct spam)); } pause(); } このコードではpause(3)の時点で約5KBのメモリが漏れている。free(3)を使えばメモリをOSに返却できるが、アドレスが分からないので返却できない。 ところが、ここでいいたいのは、メモリ

    メモリリークとは何か - kuenishi's blog
  • メモリのフラグメンテーションとGC - GC Advent Calendar - I am Cruby!

    Garbage Collection Advent Calendarの13日目の記事です(よくぞここまで…)。 フラグメンテーションの話。GC Handbookには以下の2種類のfragmentationがあることが記されています。 external fragmentation internal fragmentationそれぞれ見てみましょう。 external fragmentationexternal fragmentationはみなさんがよく知ってるやつだと思います。 シンプルなfreelistによるメモリアロケータ(K&R mallocとか)をずーっと使い続けていると、そのうちにfragmentationが発生して、以下の図のように小さな領域が飛び飛びに空いた状態になる可能性があります。 こうなると合計の空き領域は要求サイズを満たすものの、実際には外側に渡せるサイズはとても小さな

  • SIODのGCリーディング(1) - GC Advent Calendar - I am Cruby!

    Garbage Collection Advent Calendarの9日目の記事です。 CRubyのGCで特徴的なヒープの構造がSIODから受け継いだものか調べてみたいと思います。 その前に特徴的なヒープの構造についてちょっと説明しておきましょう。 HotspotVMなんかは、たとえば文字列みたいなオブジェクトは文字列自体も含めてJavaのヒープに格納するんですが、 CRubyの場合は、オブジェクトは固定のサイズとして管理されていて、はみ出すような大きなサイズのデータは別途Cライブラリ側のmalloc(3)を呼び出して確保するようになっています。 オブジェクト用mallocを言語処理系上に作ってしまうか、それともCライブラリ側のmallocに任せてしまうかの違いがあります。 後者の場合、フラグメンテーションに対する対策やキャッシュローカリティはmalloc側におまかせになるわけですね。

  • 真夜中のmalloc

    K. Sakaguchi @pi8027 そういえば mmap を使ってメモリ確保できるよねっていう有名な話がありますけど、あれって malloc で同じサイズ取ってくるのに比べて何か利点あるんですか。 2011-02-12 23:56:40

    真夜中のmalloc
  • 1