Linux Daily Topics 2019年8月22日Linuxデスクトップにレスポンシブなメモリ解放を提供する「Low-Memory-Monitor」 Androidには、起動中のアプリやサービスが増え過ぎてメモリを圧迫する状態になった場合、「lowmemorykiller daemon(lmkd)」というデーモンが起動し、優先度の低いアプリ/サービスを強制的に終了し、メモリ領域を確保する仕組みがユーザスペースに実装されている。 このlkmdに似た仕組みをLinuxデスクトップのユーザスペースでも実現するべく、Red Hatでデスクトップ開発を担当するBastein Noceraは8月21日、私的なプロジェクト「Low-Memory-Monitor」を立ち上げた。 low-memory-monitor: new project announcement : /bɑs ˈtjɛ̃
libtool: compile: g++ -DPACKAGE_NAME=\"nysol_mcmd\" -DPACKAGE_TARNAME=\"nysol_mcmd\" -DPACKAGE_VERSION=\"3.0\" "-DPACKAGE_STRING=\"nysol_mcmd 3.0\"" -DPACKAGE_BUGREPORT=\"info@nysol.jp\" -DPACKAGE_URL=\"\" -DPACKAGE=\"nysol_mcmd\" -DVERSION=\"3.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
(This post is also available in English.) この記事は In defence of swap: common misconceptions を 著者の Chris Down さんの許可 を得て Hiroaki Nakamura が日本語に翻訳したものです。 原文のライセンス は CC BY-SA 4.0 であり、翻訳のライセンスも同じく CC BY 4.0 とします。 長文を読みたくない方への要約: スワップを持つことは正しく機能するシステムのかなり重要なポイントです。 スワップが無ければ、まともなメモリ管理を実現することは難しくなります。 スワップは一般的に緊急事態用のメモリを取得するためのものではなく、メモリの回収を平等に効率的に行うためのものです。 実のところ「緊急事態用のメモリ」は一般的に盛大に悪影響を及ぼします。 スワップを無効にすることは
mmap はファイルとメモリーアドレスのマッピングを行う mmap をしてもファイルデータが物理メモリーへ即ロードされない(レイジー最適化) データが物理メモリーにロードされてるかは MMU(メモリー管理ユニット)が検知してページフォルトを生成する OS カーネルがページフォルトをインターセプトしたら、やっとファイルデータはメモリーにロードされる mmap は Linux でファイルとメモリーのアドレスを紐付けて(マップして)、ファイルをメモリーかのようにアクセスできるようにしてくれる関数です。 基本的な用途としてはメモリーの中身をハードディスクの中にあるファイルにバックアップを高い頻度でとりたい場合ですかね。 もしくはディスク内のファイルを配列・バッファーのように読み込みたいとかです。 まあ必ずしもファイルをマップする用途に限定されるわけじゃないですが、ここはお急がしい読者さんのために分
前の記事:golangとDockerとOOM を書いた後で Go側の事情に変化があったため、 あの記事に書かれた方法は現実的な選択肢ではなくなってしまいました。 この記事では私が使っているGo 1.14以降でのOOM対策と、 どうしてそうせざるを得なかったのか解説をお届けします。 TL;DR Goの64ビット版はVSZの最小要求量が大幅に拡大した (500MB超) 前の記事で紹介した方法が現実的ではなくなった VSZの制限をRSSに転用する=最低でも500MBのRSSを設定することになる 代わりに自プロセスのRSSを監視して閾値を超えたらアポトーシスするようにした RSS取得用のkoron-go/phymemパッケージを作成した Background あの記事を書いた翌月末にGo 1.14がリリースされました。 その変更点の中に以下の記述があります。 The page allocator
http://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01c.html Activeはページキャッシュや無名ページ(注3)のうち、最近利用したり、まだストレージとの同期が取れていない「捨てられない」ページです。Inactiveは、同じくページキャッシュや無名ページのうち、最後にアクセスされてからある程度時間がたち、ストレージとの同期も完了していて、すぐに捨てられるページです。よって、/proc/meminfoの出力でいうところの MemFreeとInactiveを足すことで確実に利用可能なメモリ量を算出することができます。 (実際に利用可能なメモリ量)≒(MemFree+Inactive) この値を利用し、一定量を下回らないようにするのが、簡単・確実なメモリ利用率監視法といえます。 間違ってる。完全に。 たぶんNTT OSSセンタとい
freeコマンドに追加されたavailable 3.14および2.6.27から、freeコマンドの書式が変わり、 -/+ buffers/cacheが消えてavailableという項目が増えました。 availableは/proc/meminfoの中にあるMemAvailablの値を参照しています。 この値は、新しいアプリがスワップせずに使える容量はどれくらいか。といった値を示しているようです available Estimation of how much memory is available for starting new applications, without swapping. Unlike the data provided by the cache or free fields, this field takes into account page cache and
VPSで管理してるWEBサイトの死活監視のアラートメールが届き、ブラウザでチェックしたらサイトが見れない。SSHでログをチェックしたら「httpd invoked oom-killer:」の文字が…。 OOM KillerさんにApache(httpd)のプロセスが強制終了させられたらしい。 Jan 12 11:37:53 ns1 kernel: httpd invoked oom-killer: gfp_mask=0x200da, order=0, oom_score_adj=0 Jan 12 11:37:53 ns1 kernel: httpd cpuset=/ mems_allowed=0 Jan 12 11:37:53 ns1 kernel: CPU: 0 PID: 18178 Comm: httpd Not tainted 3.10.0-957.1.3.el7.x86_64 #1
サービスを運用してると、急に人気が出たり、新しくプログラムをデプロイしたりした時に、まれにメモリを食いつぶしてサーバが不安定になってしまうことがあります。その時サーバではOomKillerが動いて、Linuxが自動ででプロセスプロセスをkillしてメモリを確保しようとします。 どのプロセスがやっつけられてしまうかわからないので、サーバがとても不安定になったり挙動不審になったりすることが多いです。今回は、サーバでOomKillerが動いてしまった時の対処方法を紹介します。OSはCentOS 6.5 64Bitです。 ■とにかくサーバの再起動しましょう OomKillerが動くと正直、何が起こるわからないです。どのようなプロセスが停止されて、どんな状況なのかわからないことが多いです。なので、一旦サーバの再起動をしてしまいましょう。サーバが動いている感じがしても、今後の事も考えてサーバを再起動し
10年以上前の昔話であり、そんなこともあったのねという話。あるいはエンタープライズサポートってそんなことやってるのねという話。 カーネルメモリダンプLinuxカーネルをエンタープライズに使おうとした企業、富士通やIBM、日立といった企業がこぞってカーネルに入れようとした機能がカーネルがパニックした時に「なぜコケたのか」調べるための機能であった。その最たるものがメモリダンプだった。この機能はカーネルパニックが起きた後のメモリをディスクに吐き出す。この吐き出されたメモリイメージをダンプと呼び、これをデバッガに食わせて原因調査をする。 カーネルデベロッパはパニックが起きたら再現条件を探して理詰めでバグを探すのが得意だが、顧客先でパニックが起きたら「再現させてくれ」とは中々言えないのでこの機能はサポートには重要だった。そして、ダンプ調査の技を持つエンジニアも居た。 地雷型メモリ破壊パニック色々と調
現在のメモリの使用状況 # cat /proc/meminfo 項目 説明 MemTotal 物理メモリ搭載量 MemFree 空きメモリ容量 Buffers Bufferのサイズ Cached PageCacheのサイズ SwapCached Page outされていたページをPage inして、まだディスクにPage outした時のデータが残っているページのサイズ。空きメモリが足りなくなった場合、Page outせずにそのまま解放できるのでディスクI/Oを省略できます。 Active 最近アクセスされたページ。基本的に解放の対象外となります。 Inactive 最近アクセスのないページ。空きメモリが少なくなるとこのページから解放されていきます。 HighTotal HighMemoryの総容量 HighFree HighMemoryの空き容量 LowTotal LowMemoryの総容
サーバーのメモリが slab_cache で占有される サーバーのメモリが数日で slab_cache に占有されるので原因と対策を調査した。 メモリの使用状況の調査 meminfo meminfo を見ると Slab のメモリ使用量が確認できる。 SReclaimable と SUnreclaim を足すと Slab になる。 $ cat /proc/meminfo | grep "Slab\|claim" Slab: 1654520 kB SReclaimable: 1631304 kB SUnreclaim: 23216 kB slabtop slabtop コマンドをたたくと top コマンドのように Slab の内訳が表示される。 dentry が最も多いようだ。 --once は1回出力で終了するオプション。 --sort=c はキャッシュサイズ順にソートするオプション。 sl
導入ガイド I. システムの基本設定 Expand section "I. システムの基本設定" Collapse section "I. システムの基本設定" 1. キーボードの設定 Expand section "1. キーボードの設定" Collapse section "1. キーボードの設定" 1.1. キーボードレイアウトの変更 1.2. キーボードレイアウト表示器の追加 1.3. 一休みの設定 2. 日付と時刻の設定 Expand section "2. 日付と時刻の設定" Collapse section "2. 日付と時刻の設定" 2.1. 日付/時刻のプロパティのツール Expand section "2.1. 日付/時刻のプロパティのツール" Collapse section "2.1. 日付/時刻のプロパティのツール" 2.1.1. 日付と時刻のプロパティ 2.1.
Section: Linux Programmer's Manual (5) Updated: 2015-01-22 Index JM Home Page roff page 名前 proc - プロセスの情報を含む擬似ファイルシステム 説明 proc ファイルシステムは擬似的なファイルシステムであり、 カーネル内のデータへのインターフェースとして使用される。 一般的には /proc にマウントされる。 大部分のファイルは読み出し専用 (read-only) であるが、 いくつかのファイルは書き込み可能であり、 そのファイルに書き込めばカーネルの内部変数を変更できる。 以下のリストでは /proc 階層以下のファイルやディレクトリの多くについて説明している。 /proc/[pid] 実行中のプロセスについてのサブディレクトリ。 サブディレクトリ名は (そのプロセスの) プロセス ID であ
Linux のリソース管理を行うコマンドはたくさんありますが、そのうちの free コマンドについて、その実行結果の見方をきちんと知っておきたいと思います。 free コマンドは、メモリの使用状況を表示するコマンドです。 実行すると、下表に示す3種類の領域に関する容量データ(項目)が表示されます。 領域
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く