[解決済み] proc/pid/smaps の pss とは?
質問
について混乱しました。
Pss
の列を
/proc/pid/smaps
ということで、試しにプログラムを書いてみました。
void sa();
int main(int argc,char *argv[])
{
int fd;
sa();
sleep(1000);
}
void sa()
{
char *pi=new char[1024*1024*10];
for(int i=0;i<4;++i) {
for(int j=0;j<1024*1024;++j){
*pi='o';
pi++;
}
}
int cnt;
for(int i=0;i<6;++i) {
for(int j=0;j<1024*1024;++j){
cnt+=*pi;
pi++;
}
}
printf("%d",cnt);
}
$cat /proc/`pidof testprogram`/smaps
08838000-0885b000 rw-p 00000000 00:00 0 [heap]
Size: 140 kB
Rss: 12 kB
Pss: 12 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 12 kB
Referenced: 12 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
b6dcd000-b77d0000 rw-p 00000000 00:00 0
Size: 10252 kB
Rss: 10252 kB
Pss: 4108 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4108 kB
Referenced: 4108 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
ここで、私は
Pss
と同じです。
Private_Dirty
が、なぜだろう。
ちなみに
smaps
?
解決方法は?
引用元 lwn.net
<ブロッククオートプロセスのプロポーショナルセットサイズ(PSS)は、プロセスのページ数のことです。 各ページをメモリに登録されている数で割ったものです。 プロセスで共有されます。つまり、あるプロセスが1000ページを独り占めしている場合。 で、1000を他のプロセスと共有している場合、そのPSSは1500になります。
から Linux Kernel ドキュメント ,
は
/proc/PID/smaps
は、マップに基づく拡張機能で、メモリ
プロセスの各マッピングの消費量。各マッピングに対して
は次のような行の連続である。
08048000-080bc000 r-xp 00000000 03:02 13130 /bin/bash
Size: 1084 kB
Rss: 892 kB
Pss: 374 kB
Shared_Clean: 892 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 892 kB
Anonymous: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 374 kB
これらの行のうち最初の行は、表示されているのと同じ情報を示しています。 のマッピングは /proc/PID/maps . 残りの行は、サイズ のマッピング( サイズ ) 、現在マッピングの量 をRAMに常駐させる( RSS ) 、このマッピングのプロセスの比例配分率 ( PSS ) 、マッピングの中のクリーンなプライベートページとダーティなプライベートページの数です。 の一部であるページであっても、そのページは MAP_SHARED マッピングを使用しているが のみがマッピングされている、つまり、現在1つのプロセスによってのみ使用されている。 はプライベートとして計上され、共有とはなりません。 参照先 を示します。 現在、参照またはアクセスされているとマークされているメモリの量。 "です。 匿名希望 は、どのメモリにも属さないメモリの量を示しています。 ファイルを作成します。 ファイルに関連付けられているマッピングにも、匿名の ページです。 MAP_PRIVATE で、ページが変更されると、そのファイルのページが は匿名のプライベートコピーに置き換わります。 スワップ を表示します。 のメモリも使用されていますが、スワップされています。
この質問
について
Unix and Linux
Stackexchangeはほぼこのトピックをカバーしています。Matの素晴らしい回答は、きっとあなたの疑問をすべて解決してくれることでしょう。
関連
-
[解決済み】ENOENTが「そのようなファイルやディレクトリはありません」という意味であるのはなぜですか?
-
[解決済み] SVNパッチの作成と適用方法について教えてください。
-
[解決済み] awk や sed を使って特定の文字を削除する
-
[解決済み] モスキートクライアントの取得が接続を拒否
-
[解決済み] Linux の設定 -- ssmtp: smtp.gmail.com:587 を開くことができません。
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?
-
[解決済み] マンページでUnixコマンド名の後に表示される括弧内の数字は何を意味しているのですか?
-
[解決済み] ドットファイルにおける "rc "の意味
-
[解決済み] Linuxの/proc/pid/mapsや/proc/self/mapsを理解する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bashのexportコマンド
-
[解決済み】スラッシュとrsyncコマンド
-
[解決済み】PytorchがCUDAは利用できないと言う件
-
[解決済み] chmod: 'my_script.sh' のパーミッションを変更しました。操作が許可されていない
-
[解決済み] CHECK_NRPE: Error - SSLハンドシェイクを完了できませんでした。
-
[解決済み] という記号がありますが、これはどういう意味ですか?
-
[解決済み] awk や sed を使って特定の文字を削除する
-
[解決済み] vimdiff の出力ファイルにおける +-- の意味は何ですか?それをオフにする方法は?
-
[解決済み] sudoとnohupを連動させる
-
[解決済み] 単一のコマンドでssh経由でコマンドが見つからない、ターミナルに接続したら見つかった[重複]。