タグ

メモリに関するmasudaKのブックマーク (50)

  • RAII解説 - Qiita

    この記事は初心者 C++er Advent Calendar 2015の21日目の記事です. 昨日はshunonymousさんの「 C++でプログラムの動作を一定時間止める」でした. まるで初心者向けの記事を書けないかのような言われようですが1,氏の期待通り初心者向けの記事を書いたつもりです. 初心者の皆さんがこの記事を読んで初心者から一歩脱してくだされば幸いです. また,マサカリは大歓迎なのでバンバン投げてください. あじぇんだ C++において多用されるRAIIという技法の考え方とメリット・デメリットについて,同様の目的で用いられることのあるGCとの対比も交えつつ紹介していきます. ちなみに私はGCとかJavaとかよく知らない初心者なので,大嘘を書く可能性があります.もし誤った記述を見かけた際には是非コメントを下さい. 初心者向けです. 考え方自体はC++98でさえも通用しますが,コード

    RAII解説 - Qiita
  • Go言語のスタックとヒープ

    GoCon 2013 Autumn で「Go言語のスタックとヒープ」という発表をしました。 資料はこちら: http://goo.gl/s6at62 スライドだけでは分かりにくい部分もあるので、ブロク記事として以下にも記しておきます。(この記事を読めば、スライドは読まなくてOKなはず) スタックとヒープについて 実行時に動的にメモリを確保する領域として、スタックとヒープがある。 スタックメモリは関数のコールスタックを格納していて、ローカル変数、引数、戻り値もここに置かれる。 スタックのPushとPopは高速なので、オブジェクトをスタックメモリに確保するコストは小さい。ただし関数を抜けてスタックがPopされると解放されるので、関数の寿命を超えてオブジェクトは生存できない。 一方のヒープメモリは、コールスタックとは関係ないので、関数スコープに縛られずにオブジェクトを確保しておける。ただし空き領

    Go言語のスタックとヒープ
  • 仮想メモリ方式の分類

    作成日:2006.03.30 修正日:2016.10.17 更新記録 (2006.03.30) 2006/3/10 と2006/3/11 の日記の内容を元に作成。 (2006.04.07) SPARC 32 ビットプロセッサのページテーブル構成を修正。 (2006.05.25) 3.2節ページテーブルエントリを追加。 (2012.05.29) PowerPC のセグメントサイズの誤りの修正と図の追加。 (2016.10.17) Intel64 の Process-Context Identifiers(PCIDs) と Protection Keys の説明を追加。また TLB エントリの無効化と ARM の情報も追加。タイポの修正。 1. はじめに 2. 仮想メモリの全体像とページング以外の機構 事前処理 事後処理 3. ページング 3.1 ページウォーク 3.2 ページテーブルエントリ

  • Linuxの不揮発メモリ対応について - Qiita

    (2019/6/12追記) 今なおこの記事を参照してくれる方がいらっしゃるのですが、現在は以下のスライドのほうが情報が新しいです。 記事は残しておきますが、新しい情報はこちらをご参照ください。 https://www.slideshare.net/ygotokernel/nvdimmlinux-137104084 はじめに Linux Advent Calendarの24日目の記事として不揮発メモリの状況について記載したいと思います。今回はkernelのソースの中とかのあまり技術的に深いところは突っ込まず、概略レベルです。(深いところはまだまだ勉強中の身です)。間違いなどがあればご指摘いただけると幸いです。 不揮発メモリとは これまでPCやサーバなどで主記憶装置といえば、電源を停止させたり再起動させるとデータがクリアされる揮発性のRAMが使われて来ました。この主記憶としてのメモリが不揮発

    Linuxの不揮発メモリ対応について - Qiita
  • いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita

    さくらインターネット Advent Calendar最終日は、硬派にLinuxのメモリに関する基礎知識についてみてみたいと思います。 最近はサーバーを意識せずプログラミングできるようになり、メモリの空き容量について意識することも少なくなりましたが、いざ低レイヤーに触れなければいけないシチュエーションになった際に、OSを目の前に呆然とする人が多いようです。 基的にLinux のパフォーマンスについて、メモリをたくさんつめばいいとか、スワップさせないほうが良い とか、このあたりは良く知られたことだと思います。 ただ、なんとなく ps コマンドや free コマンド などの結果を見るだけでなく、もう少しメモリのことについて掘り下げてみてみたいと思います。 メモリとキャッシュ Linux におけるメモリの状態を大きく分けると「使用中のメモリ」「キャッシュ」「空きメモリ」「スワップ」の 4 つに分

    いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita
  • STL風に使えるマップ型コンテナの紹介と性能比較 - Preferred Networks Research & Development

    最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリをわない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designというの作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ

  • 【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ

    はじめに linuxのメモリ利用容量(空き容量)の考え方 linuxのメモリ利用容量/空き容量の計算方法 ■RHEL7 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL6 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL5以前 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 蛇足 その1:無名ページとファイルページ その2:図解の内容のツッコミ その3:RHEL6の計算 その4:Inactiveを空き領域とすることは間違い。 はじめに linuxサーバを利用する上で何時も頭を悩ますものの一つが、メモリ利用状況の評価(メモリ利用率)ではないでしょうか。私も悩みます。そこで

    【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ
  • 大容量メモリに潜むメモリ枯渇問題その2 ~Linux HugePageの薦め~|技術ブログ|レック・テクノロジー・コンサルティング株式会社

    こんにちは。 前回はイントロダクションで終わってしまいましたが、 今回は『大容量メモリに潜むメモリの枯渇問題』のよくある原因について早速ご紹介していきます。 ページテーブルエントリ 大容量メモリにおけるメモリ枯渇問題のよくある原因の1つは、「ページテーブルエントリ(以下、PTE)」です。 PTEはメモリ上に確保される要素であり、OS(ここではLinux)がメモリ管理を行ううえで重要な役割を担います。しかし、このPTEが予想外のメモリ消費を引き起こすことがあります。 ではまず、PTEを理解するうえで前提となるページテーブルについて説明します。 物理メモリは、「ページ」という一定サイズで切り出した単位で管理されており、x86CPUを使用したLinuxの場合、1ページあたりのサイズが4KBとなっています。実に、1GBのメモリ領域でも26万ページ以上のページ数になります! 通常、プロセスからメモリ

    大容量メモリに潜むメモリ枯渇問題その2 ~Linux HugePageの薦め~|技術ブログ|レック・テクノロジー・コンサルティング株式会社
  • DMM inside

    アニメ初の快挙!海外アニメ賞を受賞した『スキップとローファー海外ライセンス部長&プロデューサーが語る、奮闘の舞台裏

    DMM inside
  • Linux、負荷まわりの話 - goungoun技術系雑記帳

    外部記憶装置のデータをページ単位でメモリ上に保存するしくみ。 空きメモリは積極的にページキャッシュとして使用される。(空きメモリが少ないからといって、メモリが足りないとは言い切れない) バッファキャッシュを含む。 read ページキャッシュから読み込む。 ページキャッシュ上に存在しないとき、外部記憶装置から読み込む。 write ページキャッシュ上に書き込む。 書き込まれたページはDirtyなページ(=外部記憶と同期していないページ)となる。 Dirtyなページは後でまとめて外部記憶に書き込む。 ページキャッシュ経由でデータがやり取りされる。 +------------------------------------------+ | ファイルシステム、mmap、スワップ処理など | +------------------------------------------+ read↑ ↓w

  • 一時ファイルとdentry cacheとメモリ - blog.nomadscafe.jp

    わりと長い間悩んでいたんだけど、最近解決したのでメモ。 サービスで利用しているsmalllightの画像変換サーバが、Apacheが使っているメモリ以上のメモリを使用し、Swapしたりメモリ枯渇でサーバがダウンするなどのことが何度かありました。 ↑メモリの動きはこんな感じ いろいろ調べた結果「dentry cache」なるものがメモリ多くを占めていることがわかりました。dentry cacheはディレクトリやファイル名とinodeとを結びつけに使われるキャッシュです。smalllightでは画像を変換する際に一時ファイルを作成するので、その情報が残るようです。 手元で再現させる 番で使っているサーバはCentOS5系ですが、手元のVagrant上のCentOS6(ファイルシステムはext4)で、再現させてみました。 use Parallel::Prefork; use File::Tem

  • アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について - s_tajima:TechBlog

    問題 アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について調べた。 該当のサーバでは、以下のようにメモリの使用率が徐々に上昇していく。 また、アプリケーションのプロセス自体がメモリを消費しているわけではない状態。 原因 調査すると、このバグ仕様を踏んでいるのではないかと思われるページを見つけた。 https://bugzilla.redhat.com/show_bug.cgi?id=1044666 内容としては、curlを実行した際に /etc/pki/nssdb/以下の存在しないファイル(毎回違うパス)に対してaccessシステムコールが大量にコールされ、 negative dentry cacheが溜まっていき、メモリ使用量が圧迫されるというもの。 実際、この状況が起きているサーバを調べるとメモリ使用率のうち多くを占めているのはnega

    アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について - s_tajima:TechBlog
  • Ruby でラインメモリプロファイラ - Qiita

    プロファイラ好きなモニタの前の皆さんこんにちは。@sonots です。この記事では、Ruby コードのどの行がどのぐらいメモリを消費しているか調べる方法を紹介します。 オブジェクトの数を数える Ruby には ObjectSpace というオブジェクトの情報を集めたり操作したりする module があります。 このモジュールの each_object メソッドを使用すると、RubyVM 上の全てのオブジェクトを取り出すことができます。 このメソッドを使って、以下のようなコードを書くと、実行した地点で、RubyVM 中にどのクラスのオブジェクトが何個存在しているのかカウントできたりするわけです。興味深いですね! ObjectSpace.each_object.inject(Hash.new 0) {|h,o| h[o.class]+=1; h } #=> {Class=>241, Strin

    Ruby でラインメモリプロファイラ - Qiita
  • slab肥大化とdentry_cacheに辿り着くまでの話 - Qiita

    内容(3行) memoryの使用量を監視している所からアラートが来て調査した アプリケーションのheap使用率は高くなく、top等を見ても他に怪しいプロセスが存在しない /proc/meminfoからslab領域の肥大を確認、slabtopでdentry_cacheが肥大化している事がわかったので、echo 2 > /proc/sys/vm/drop_caches を実施した 何があったのか 運用中のとあるサーバーのmemoryが残り20%を切ったとアラートが来たため、調査を行った。 当初は何かしらのプロセスがメモリリークしているか何かだろうとあたりをつけていた。 freeで現状確認 キャプチャとるの忘れた… が、一旦確かにfree(buffers, cahceを足したもの)がtotalの20%を切っていることを確認。 topで確認する アプリケーションプロセスにメモリを大量消費しているプ

    slab肥大化とdentry_cacheに辿り着くまでの話 - Qiita
  • Linux のオーバーコミットについて調べてみた

    Linux のオーバーコミットについて調べてみた Linux のオーバーコミットのはなし(これを書いたのは Linux 2.6.38 のとき) Linux カーネルは実メモリ以上にメモリをプロセスに割り当てることができる この仕組みをオーバーコミット (over-commit) と呼ぶ オーバーコミットでは,とりあえずメモリを malloc させて仮のアドレスを返しておき, 実際に使われる段になってはじめて実メモリを確保する. 実験ただ malloc し続けるだけのプログラムを作って実験してみる. このプログラムをメモリ 1 GB + スワップ 1 GB のホストで実行してみると, $ free -t total used free shared buffers cached Mem: 1022404 82992 939412 0 4172 12280 -/+ buffers/cache:

    Linux のオーバーコミットについて調べてみた
  • java.lang.OutOfMemoryError #渋谷java

    9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation

    java.lang.OutOfMemoryError #渋谷java
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • http://www.ekouhou.net/%E4%B8%8D%E8%89%AF%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B%E9%9B%BB%E5%AD%90%E6%A9%9F%E5%99%A8%E3%80%81%E4%B8%8D%E8%89%AF%E3%83%A1%E3%83%A2%E3%83%AA%E6%A4%9C%E5%87%BA%E6%96%B9%E6%B3%95%E3%81%8A%E3%82

  • どうしてメモリはスワップするのか!?

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

    どうしてメモリはスワップするのか!?
  • 記憶容量が現行メモリの10倍&消費電力は3分の2の次世代メモリ「MRAM」を日米20社の半導体企業が共同開発、いよいよ量産化が明確に

    By Chris Sinjakli 現行のDRAMに代わる次世代メモリとして期待される「MRAM」を、マイクロン・東京エレクトロンなど日米半導体開発関連企業20社が、研究開発拠点となる東北大学「国際集積エレクトロニクス研究開発センター」で共同開発することが決定しました。日米半導体連合は2018年のMRAM量産化を計画しており、いよいよ量産化に向けてMRAMの開発が加速する見込みですが、「そもそもMRAMは現行のメモリとどう違うのか?」ということで、現行メモリとMRAMの違いや、これまでの開発の流れをまとめました。 日米で次世代半導体 米マイクロンなど20社超参加  :日経済新聞 http://www.nikkei.com/article/DGXNASDD23018_T21C13A1MM8000/ 日、空洞化に危機感 日米で次世代半導体  :日経済新聞 http://www.nikke

    記憶容量が現行メモリの10倍&消費電力は3分の2の次世代メモリ「MRAM」を日米20社の半導体企業が共同開発、いよいよ量産化が明確に