トップページ > 過去ログ > 記事閲覧
NetworkのTotal、及びVirtualについて
日時: 2008/11/13 21:14:50
名前: 白茶

お世話になります。
連投になって申し訳ない・・・デス。

NetworkUpTotal,NetworkDownTotalのラベル表示についてですが、
現状、4GBに達した時点で0Bに戻るような仕様(オーバーフロー回避の為?)みたいですが、
この制限を取り払う、若しくは伸ばせないものでしょうか?


それから、メモリの「Virtual」とは何か?という疑問について、
以前の投稿にありましたが、板上で結論に達してなかったので。

当方にあるPC及びサーバー、w2000の256MBメモリから、w2003serverの3GBメモリまで
計5台でAkamoniを使わせて頂いてまして、スペックや購入時期はバラバラですが、
何れもVirtualTotalは「2047.9MB」まぁ2GBです。

で、2GBと言えば、仮想アドレス空間の内の「ユーザ空間」か「カーネル空間」のどちらかだろな。
http://128bit.blog41.fc2.com/blog-entry-32.html

という予想のもとで・・・

Page: 1 |

・・・続き ( No.1 )
日時: 2008/11/13 21:16:02
名前: 白茶

windowsタスクマネージャの「プロセス」タブ内にある「仮想メモリサイズ」は、ヘルプによると
「プロセスにコミットされた仮想メモリの量、つまりアドレス空間の総量」だと。
これを電卓で合計してみたところ、278,904KB
この時のakamoniのVirtualUsedは、 71,012KB ちょっと違い過ぎますね。
尚且つ、アプリケーションを複数起動させると
タスクマネージャの仮想メモリサイズは変動する(プロセス数が増えるので当然)のに対し、
akamoniのVirtualUsedは、全く動き無しです。・・・と言う事は、カーネル空間か。

以下は、akamoniのVirtualUsedの値と、値が変化したタイミングで行ってた操作。
54,808KB PC起動1分後
60,813KB 5分後IE起動後(起動中はもう少し跳ね上ってた。一瞬)
61,861KB BuffaloのUSB FlashDriveを挿入後
60,813KB BuffaloのUSB FlashDriveを取り外し後
(ハードウェアの変化に伴って、約1MBの増減を確認)

ちなみに、この時のタスクマネージャの「パフォーマンス」タブ内「カーネルメモリ」の合計は
107,264KB 5分後IE起動
107,272KB BuffaloのUSB FlashDriveを挿入後
107,144KB BuffaloのUSB FlashDriveを取り外し後
(あんま変わんないね・・・)

という感じでした。

やはり仮想アドレス空間の内の「カーネル空間」の量を表していると予想したのですが・・・
請う御意見。です。

長々とスミマセン。
Re: NetworkのTotal、及びVirtualについて ( No.2 )
日時: 2008/11/15 23:13:03
名前: Akabei@管理人

>NetworkUpTotal,NetworkDownTotalのラベル表示についてですが、
>現状、4GBに達した時点で0Bに戻るような仕様(オーバーフロー回避の為?)みたいですが、
>この制限を取り払う、若しくは伸ばせないものでしょうか?

積算すれば可能だと思うのですが
いろいろ問題がありそうなので検討させて下さい。

仮想メモリ=ページファイルと思ってるんですが
VirtualUsedって結局なんなんでしょうね。

ちなみにこちらの環境でもVirtualTotalは2GBです。
Re: NetworkのTotal、及びVirtualについて ( No.3 )
日時: 2008/11/15 23:56:50
名前: 白茶

>積算すれば可能だと思うのですが
>いろいろ問題がありそうなので検討させて下さい。
宜しくお願いします。

>仮想メモリ=ページファイル
Wikipedia「仮想記憶」にこんな記述がありました。

>「仮想記憶」という用語は「メモリスワッピング」と混同されることが多い。
>これはMicrosoft Windows系のオペレーティングシステム (OS) が
>メモリスワッピングの可/不可を設定する項目を "virtual memory" と称していることも一因と考えられる。

私もあまりよく理解出来ていませんが、
本来のvirtual memoryはRAM上及びDisk上にストレートに存在している訳ではない、
文字通り「仮想」的なモノだと思います。OSがアタマの中で便宜上仮定している2GB空間だと。
OS側から見れば、その実態がRAMに在ろうがDiskに在ろうが、
またRAM+DISKが1GBだろうが100GBだろうが関係のない話で、
実際に「Used」している部分だけが、MemoryUsedやPagefileUsedという表現の中に
「紛れ込んでいる」ものなのかな?
と思っています。

最適なページ・ファイル・サイズを知るには
http://www.atmarkit.co.jp/fwin2k/win2ktips/076pgfilesize/076pgfilesize.html
仮想メモリ(Virtual Memory)
http://www.daw-pc.info/column/virtualmem.htm
ページ アドレス プールとシステム PTE のメモリ領域の設定方法
http://support.microsoft.com/kb/247904/ja
[XGEN] Exchange 2000 Server におけるスケーラビリティの計画
http://support.microsoft.com/kb/298064/ja

↑関係ない記事かも知れませんが・・・
どなたか詳しい方の意見が欲しい所ですね。
勇み足? ( No.4 )
日時: 2008/11/17 14:52:00
名前: 白茶

AkamoniがGlobalMemoryStatus(又はEx)というAPI関数を使っているのであれば、ですが、
これは一部前言撤回って事ですかねぇ〜・・・

http://tokyo.cool.ne.jp/kanain/APIHTM/Memory.html

MEMORYSTATUS構造体
dwTotalVirtual
ユーザモードで処理がアクセスできる仮想アドレス空間のバイト数(物理メモリ+仮想メモリ)
dwAvailVirtual
ユーザモードで処理がアクセスできる占有も予約もされていない仮想アドレス空間のバイト数。


http://www.activebasic.com/help_center/articles/win32/step27/index.html
Type MEMORYSTATUS
dwLength As Long '構造体のサイズ(事前に指定して下さい)
dwMemoryLoad As Long 'メモリの使用状況がパーセンテージで格納されます(0 〜 100)
dwTotalPhys As Long '物理メモリの容量がバイト単位で格納されます
dwAvailPhys As Long '物理メモリの空き容量がバイト単位で格納されます
dwTotalPageFile As Long 'ページ ファイル(仮想メモリ)の容量がバイト単位で格納されます
dwAvailPageFile As Long 'ページ ファイル(仮想メモリ)の空き容量がバイト単位で格納されます
dwTotalVirtual As Long 'ユーザーが使用できるアドレス空間の容量がバイト単位で格納されます
dwAvailVirtual As Long 'ユーザーが使用できるアドレス空間の空き容量がバイト単位で格納されます
End Type

仮想アドレス空間のことを指しているのは正解だったようですが、
カーネルじゃ無いっぽいですね。

もしakamoniのvirtualがカーネル空間の事なのであれば、
ユーザー空間に関する表示機能も欲しいな・・・って事だったんですが、
その必要は無いのかも知れません。
(人騒がせでスマセン)
・・・続き ( No.5 )
日時: 2008/11/18 18:22:11
名前: 白茶

Excel上でGlobalMemoryStatusをWorksheet関数に展開して実験してみました。
メモリ、ページファイルに関する情報はakamoniと同じでした。
VirtualTotalに当たる部分もほぼ同じ。
(「ほぼ」というのは、akamoniでbyte単位表示すると、KB未満の端数が0表示になる為)

で、VirtualFreeに当たる部分だけが違いました。
akamoniが1,978,296,875byteなのに対して、
Excelでは1,940,529,152byteです。

Totalからの引き算で、VirtualUsedは、
akamoniが 69,578,125byte
Excelだと206,823,424byte
その後Excel上で別の作業を進めるに連れて、ExcelのVirtualUsedの値は頻繁に変化しました。
(akamoniの方は変化なし)

あれから更にちょっと勉強したところ
アドレス空間はプロセス毎に2GBずつ割り当てられる
それから
MEMORYSTATUS構造体のdwTotalVirtual、dwAvailVirtualは
(どうやら)呼び出し元のプロセスに関する仮想アドレスの量を返している(らしい)
ので、
akamoniがGlobalMemoryStatus関数を使っているならば、そのVirtual云々の値は、
akamoni自身が使用している仮想アドレス空間の容量を示しているものと考えられます。

前回の実験で、
複数のアプリケーションを起動させてもVirtualUsedの値が変化せず、
USBドライブを抜き差しした時に変化した事もこれで説明がつきますね。

以上、仮定の上での論理展開なので、大ハズレだったらホントすみません。
まあ、私なりの結論という事で・・・。
さらに補足 ( No.6 )
日時: 2008/11/19 13:19:35
名前: 白茶

「ほいじゃ、アレかい? akamoniが70MB近くもメモリを食ってるって言うのかい?」
という誤認があるといけないので・・・。

windowsタスクマネージャの「プロセス」タブ内にある「仮想メモリサイズ」は、
「プロセスにコミットされた仮想メモリの量、つまりアドレス空間の総量」。

当方のタスクマネージャでakamoni.exeの仮想メモリサイズは9,744KBでした。
(ちなみに同「メモリ使用量」は7,964KB)
この時akamoniに表示されているVirtualUsedは55.9MBです。

この差は、dwAvailVirtualが「予約もコミットもされていない仮想メモリの空容量」を返す為、
VirtualUsedの値には、コミットされたメモリ量にプラスして、予約されたメモリ量も
含まれている為だと思われます。
予約部分は実メモリ(RAM又はDisk)を実際に消費している訳ではないので、
akamoniの実メモリ使用量としてはタクスマネージャの9,744KBの方が近いと言えます。
(内、タクスマネージャのメモリ使用量7,964KBがakamoniの使っているRAM上の実メモリ)

「近い」という表現をしたのは、実はちょっと疑問が残るから。
9,744KBから7,964KB引いた残りの1,780KBがDisk上の実メモリ(ページファイル)
だと思ったのですが、
他のプロセスには「仮想メモリサイズ」より「メモリ使用量」の方が大きいものもあり、
その理屈が良く解りませんでした。

以上、補足。
Re: NetworkのTotal、及びVirtualについて ( No.7 )
日時: 2008/11/20 22:20:07
名前: Akabei@管理人

>白茶さん

>AkamoniがGlobalMemoryStatus(又はEx)というAPI関数を使っているのであれば、ですが、

GlobalMemoryStatus()を使用しています。

>akamoni自身が使用している仮想アドレス空間の容量を示しているものと考えられます。

なるほど

>複数のアプリケーションを起動させてもVirtualUsedの値が変化せず、
>USBドライブを抜き差しした時に変化した事もこれで説明がつきますね。

そうですね
USBドライブを抜き差しするとディスクの情報を取得したりするので

あまり知識がないのでちゃんと理解できたかわかりませんが
勉強になります。
まったくの余談なのですが、 ( No.8 )
日時: 2008/11/26 22:26:16
名前: 白茶

タスクマネージャの数値に疑問を残していた件についての後日談です。

>「仮想メモリサイズ」より「メモリ使用量」の方が大きい
プロセスがたくさんあるという疑問を残していましたが、

GetProcessMemoryInfo()というAPIを何処かで見かけたので、
前回同様にExcel上に展開して、タスクマネージャと比較してみました。

PROCESS_MEMORY_COUNTERS構造体の中の、
PagefileUsageが、タスクマネージャの「仮想メモリサイズ」と一致しました。

って、おいおい・・・。

w2000のヘルプもXPのヘルプもw2003serverのヘルプも
>「プロセスにコミットされた仮想メモリの量、つまりアドレス空間の総量」
と明記してあるが・・・?

まぁ、言われてみれば「仮想メモリ」という言葉自体に、
マイクロソフトの中でも混乱が見られる様ですし、
さすがに構造体のネーミングがデタラメのままってのは無いでしょうから、
どうやら、タスクマネージャの「仮想メモリサイズ」は
そのプロセスが使用しているページファイルサイズという見方が正解みたいです。

という事は、
タスクマネージャ上でのakamoniの実メモリ使用量としては、
「メモリ使用量」+「仮想メモリサイズ」が正解で、
前回の数値で表現すると、
9,744KB + 7,964KB = 17,708KBがakamoniの実メモリ(RAM+DISK)
なのかな?

という所に至りました。
以上、訂正を兼ねて余談でした。

Page: 1 |