HP-UX初心者です。ご協力よろしくお願いします。

サーバの稼動状況を監視する為、sarコマンドを実行しています。

Solarisでのオプションでは以下に相当する、
HP-UXでの sar オプションはないでしょうか?
manの結果比較などをやってみたのですが、わかりませんでした。

・・・・・・・・・・・・・・・
sar -r : freemem
sar -g : pgscan/sec pgfree/sec
sar -p : pgin/sec ppgin/sec
sar -k : fail(sml) fail(lg) fail(ovsz)
・・・・・・・・・・・・・・・

該当するオプションがない場合は、
メモリの使用率として何を監視すれば良いでしょうか?
どうぞご教授よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ちょっと今手元に資料がないもので、適当な答えになってしまうかもしれませんが、悪しからず。



メモリ系のコマンドには、
vmstatというコマンドがあります。
たしか、現在使用されているメモリを動的に表示してくれるコマンドだったと思います。

使い方はmanを参照ってことで、ヒトツ。

参考URL:http://docs.hp.com//hpux/onlinedocs/B2355-90680/ …
    • good
    • 0

Solaris の sar コマンドがどのようなものかは知らないのですが...。


sam (System Administration Manager) というものがあります。
root になって sam コマンドを実行してみてください。
これを使えば、ある程度の情報は分かると思います。
sam は単に個々の管理コマンドを実行してその結果をGUI で表示しているだけなので、実際には個別の管理コマンドがあるはず(バッチ実行したいとか、結果を処理したい、とのことだとそういうものが必要ですよね)なのですが、詳しくないのでよく知りません。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qメモリに余裕があるのにヒープが確保できないです。

趣味のプログラムなので切実な問題ではないのですが、
1秒間隔に処理を行うプロセスを-Xmx64Mの指定で6つ起動しようとするのですが、
6つ目でヒープが確保できなくて処理が走りません。
スレッドは1プロセスあたり15くらいです。
OSはWindowsXPでCPUはPentium Dual-core E2140で
メモリは2GBつんでいるのですが、
タスクマネージャでみると1GB強しかつかってません。
できれば6つ同時に走らせたいのですが、方法はありますでしょうか?

Aベストアンサー

ヒープエリアはたしか全プロセスで共通に使われるはずです。
-Xmx64M を -Xmx128M 等に変更して動かしてみて下さい。

Q【Redhat Linux】「sar -d」の実行結果について

はじめまして。
sarコマンドについての質問です。

RedHat Linuxで性能情報を採取しているのですが、「sar -d」コマンドを実行した際、出力結果の"DEV"の列に表示されるデバイス?(dev8-16とか、dev231-4とか)の意味がわかりません。
どのようなデバイスにどのような数字が割り当てられているのでしょうか。また、そのような情報はどこかのファイルに持っているのでしょうか。

以上、よろしくお願いいたします。

Aベストアンサー

RedHat Linuxという事でしたので、CentOS5で確認してました^^;

「ls -l /dev」で表示される","の前がメジャー番号、後ろがマイナー番号のはず・・・
brw-r----- 1 root disk 3, 0 2月 4 21:34 hda

QC/C++言語のメモリについて

C言語でメモリを2種類?に分けると、スタックとヒープがあります。
ヒープは mallocなどで確保し、freeで解放しますがスタックは解放する必要がありません。
そのスタックは通常、何バイトまで可能なのでしょうか?

あと関数外のファイルの先頭に int[1000000];とした場合、このメモリはmallocで確保していませんが、
どこに作られるのでしょうか?

私のパソコンはメモリが2GBでWindows2000ですが、CやC++で最大、何バイトまでメモリが使えますか?
また、一番多くメモリを確保できるなら、OSはなんでも構いません。

解釈等も間違っていたらご指摘していただきたいです。

Aベストアンサー

マイコン向けのプログラムを書いてます、Interestと申します。

> C言語でメモリを2種類?に分けると、スタックとヒープがあります。

間違いではありませんが、ちょっと足りません。プログラムで使用するメモリはもう少し細かく見ると、次のようになっています。

(P) 実行される命令(ProgramとかCodeと呼ばれます)
(C) 定数など変更されないデータ
(D) 初期化されるデータ
(B) 初期化されないデータ
(H) プログラムから動的に割り当てられるメモリプール(これがヒープです)
(S) ローカル変数、関数の引数、呼び出し元関数へのリンクに使用する比較的短命なものに使用するメモリプール(これがスタックです)

> そのスタックは通常、何バイトまで可能なのでしょうか?

開発環境によって初期値が決まっているようで、どれだけ割り当てるか変更できるようです。OSには依存しません。Visual C++ 6.0の場合、スタックサイズの初期値は1MBだそうです。
参考 http://okwave.jp/qa2645032.html

> あと関数外のファイルの先頭に int[1000000];とした場合、
> このメモリはmallocで確保していませんが、どこに作られる
> のでしょうか?

最初に説明した内容に照らすと、一般に外部変数は0で初期化されますから、(D) 初期化されるデータ の領域に確保されることがわかります。

> 私のパソコンはメモリが2GBでWindows2000ですが

WindowsなどのOSは物理メモリが足りなければハードディスク上の仮想メモリも使用しますので、単純に何バイトまで使えます、とはお答えできません。

> 一番多くメモリを確保できるなら、OSはなんでも構いません。

どのようなプログラムを組もうとしているのですか?

マイコン向けのプログラムを書いてます、Interestと申します。

> C言語でメモリを2種類?に分けると、スタックとヒープがあります。

間違いではありませんが、ちょっと足りません。プログラムで使用するメモリはもう少し細かく見ると、次のようになっています。

(P) 実行される命令(ProgramとかCodeと呼ばれます)
(C) 定数など変更されないデータ
(D) 初期化されるデータ
(B) 初期化されないデータ
(H) プログラムから動的に割り当てられるメモリプール(これがヒープです)
(S) ローカル変数、関...続きを読む

Q/var: write failed, user inode limit reached が出て、処理が止まる。放置しておいていいか(レンタルサーバ)

こんにちは。

前提として私は BSD が分かりません。
ただ、説明通りにコマンドを入力するだけだからと言われ、言われる通りにやってみました。
PHPのpearのインストールです。

その際に、レンタルサーバなのですが、片方のアカウントでは何の問題もなくインストールができました。
それと全く同じ契約をしているもう片方のアカウントの方で実行したところ「/var: write failed, user inode limit reached」というメッセージが出ました。
勧めてくれた方もこのエラーは分からないそうです。

調べたところ、容量の限界というメッセージのようなのですが、サーバー全体の容量はオーバーしていません。
この/var というディレクトリの容量が恐らくオーバーしているのだとは思うのですが、いかんせんどのようにすればいいのか全く分かりません。
サポートは今日も休みですし、このまま放置しておいてもよいのでしょうか?
それともこれを直す方法というのはあるのでしょうか?
サーバーはさくらインターネットです。
特に急ぐという事はないのですが、放置していてまずいものだといけないと思いまして。

実行したコマンドは以下に記します。

%pear -c /home/○○○/.pearrc install Archive_Tar PEAR Console_Getopt XML_RPC
上記がコマンドで、その後のコピーです。

downloading Archive_Tar-1.3.1.tgz ...

/var: write failed, user inode limit reached
No releases of preferred state "stable" exist for package Archive_Tar. Use Arch
ive_Tar-state to install another state (like Archive_Tar-beta)

こんにちは。

前提として私は BSD が分かりません。
ただ、説明通りにコマンドを入力するだけだからと言われ、言われる通りにやってみました。
PHPのpearのインストールです。

その際に、レンタルサーバなのですが、片方のアカウントでは何の問題もなくインストールができました。
それと全く同じ契約をしているもう片方のアカウントの方で実行したところ「/var: write failed, user inode limit reached」というメッセージが出ました。
勧めてくれた方もこのエラーは分からないそうです。

調べたと...続きを読む

Aベストアンサー

/var: write failed, user inode limit reached

おそらく、inode不足ですね。
/varのパーティションの空き容量はあるけど、ファイルを作りすぎて
inodeが不足したために、これ以上ファイルを作れません、
という警告です。

(inodeについては、ネット検索してもらえばすぐにわかります。)

Qヒープ領域の限界値設定

大量にメモリを消費するアプリケーションを下記環境で動作させようとしています。
WindowsXP SP2, 1GB RAM
タスクマネージャの物理メモリの利用可能 674,500K位
この状態でヒープ領域をレジストリで変更しようと思っているのですが
限界値が不明です。
徐々に3071⇒4096⇒8192と上げていっているのですが、限界値を超してしまうとOS自体が起動できなくなる恐れがあるので怖いです。
アドバイスください。

Aベストアンサー

回答No.1に挙げた「デスクトップ ヒープ」で用いている「ヒープ」という用語は、グラフィックサブシステムで使用するためにWindowsのグラフィックサブシステムがあらかじめ確保して自分自身のために使用するメモリ領域のことを指しています。

また「mallocが使用するヒープ領域」という場合の「ヒープ」という用語は、ライブラリ関数mallocがWindows APIを使用して確保するメモリ領域のことを指しています。

ですので、「デスクトップ ヒープ」と「mallocが使用するヒープ領域」は違うものです。


「mallocが使用するヒープ領域」がどこから来るのかは、コンパイルに使用した言語環境のライブラリ関数mallocの動作内容に依存します。

仮にMicrosoft Visual C++(VC++ Version 6.0以降)を使用してコンパイルし、ライブラリ関数は標準添付のものを使用したとすると、mallocはWindows APIのHeapAllocで取得したメモリ領域をライブラリ内で細分(サブアロケート)して返します。またこの場合、HeapAllocで取得できるメモリ領域の量に固定の上限はなく、PCのメモリ実装量、Windowsのスワップ領域の大きさ、それとアプリケーションプロセスのメモリマップが許す限り、いくらでもHeapAllocはメモリを割り当てて返すことができます。

ですので上記の場合、mallocも同様に「PCのメモリ実装量、Windowsのスワップ領域の大きさ、それとアプリケーションプロセスのメモリマップが許す限りいくらでも」メモリを割り当てて返すことができます。

なお、上記動作はライブラリのソースコードを見て確認したものですので、使用しているコンパイラがVC++ではない、あるいはVC++でもVersion 6.0より古い場合、mallocが「いくらでもメモリを割り当てて返すことができる」かどうかは分かりません。(しかし、返すメモリ領域が「デスクトップ ヒープ」と違うものであることだけは変わりません。)

回答No.1に挙げた「デスクトップ ヒープ」で用いている「ヒープ」という用語は、グラフィックサブシステムで使用するためにWindowsのグラフィックサブシステムがあらかじめ確保して自分自身のために使用するメモリ領域のことを指しています。

また「mallocが使用するヒープ領域」という場合の「ヒープ」という用語は、ライブラリ関数mallocがWindows APIを使用して確保するメモリ領域のことを指しています。

ですので、「デスクトップ ヒープ」と「mallocが使用するヒープ領域」は違うものです。


「mal...続きを読む

Q/etc/periodic.conf: /root: Permission denied

こんにちは。
cronでperiodic dailyが毎日実行されるのですが、
/etc/periodic.conf: /root: Permission denied
とうメールがroot宛てに送られてきます。
コマンドラインで
periodic daily
と打っても同様のエラーが表示されます。

/etc/periodic.conf
/etc/periodic内のファイルはともに
root所有で755のパーミッションなのですが・・・

解決法やヒントをご教授お願いいたします。

Aベストアンサー

> /etc/periodic.conf: /root: Permission denied

/rootをコマンドとして実行しようとして失敗してる模様です。
/etc/periodic.confの内容が不正(なんかへんなところに空白が入っているとか。)になっていると思われますので、そちらを見直してみては。

Qメモリをたくさん使うテストプログラム

Linuxで、メモリをたくさん使うようなテストプログラムを作りたいのです。
メモリといっても、プログラムコードの入っているテキスト領域、データの入っているデータ領域、ヒープ領域などがあると思いますが、
これらのいずれかのみをたくさん使うようなプログラムを作りたいのです。
例えば、サイズの大きなプログラムであれば、テキスト領域が大きくなったり、
大容量の文字列を扱ったりすると、データ領域が大きくなったりするんでしょうか?
関数とメモリ使用量の関係があまり分かっていません。
どうか教えてください。

Aベストアンサー

#1です。
>テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか?
はい、その通りです。
>mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか?
いいえ、mallocした領域は、ヒープ領域であり、ヒープ領域にデータを書き込んだからといって、データ領域が増える訳ではありません。

コーディングでは、以下のようになります。
-----------------
#include ....ヘッダファイル
char data1[256];  ・・・・データ領域
main()
{
data data2[256];  ・・・・スタック領域
if (・・・){    ・・・・テキスト領域
・・・
}
malloc(3000)    ・・・ヒープ領域へ確保
}

main等の関数の外側で確保した領域は、データ領域に取られます。
main等の関数の内側で確保した領域は、スタック領域に取られます。(static指定を除く)
実際に命令(if文など)は、テキスト領域にとられます。
mallocで確保したメモリはヒープ領域に取られます。
(但し、テキスト領域の言葉は正しいかどうか不明です。参考URLを参照下さい)
ところで、どうして、メモリをたくさん使うようなテストプログラムを作りたいのですか、よかったら教えて下さい。そのほうに興味があります。

参考URL:http://www1.cts.ne.jp/~clab/hsample/Point/Point19.html

#1です。
>テキスト領域を大量に確保するには、無駄に長いプログラムを書けばいいのでしょうか?
はい、その通りです。
>mallocした領域にデータを書き込むと、今度はデータ領域がたくさん使われるのでしょうか?
いいえ、mallocした領域は、ヒープ領域であり、ヒープ領域にデータを書き込んだからといって、データ領域が増える訳ではありません。

コーディングでは、以下のようになります。
-----------------
#include ....ヘッダファイル
char data1[256];  ・・・・データ領域
main()
{
data...続きを読む

Qエラー「cpp0: /var/tmp/cczy3NgV.ii: デバイス上の空き領域が足りません。」

Solaris2.6の環境です。
C++プログラム初学者です。

% uname -a
SunOS ultra 5.6 Generic_105181-23 sun4m sparc SUNW,SPARCstation-5

C++プログラムの学習中にC++のリストをmake使用とすると

% cd ~/test

% make
g++ -c -o timer.o timer.cc
cpp0: /var/tmp/cczy3NgV.ii: デバイス上の空き領域が足りません。
make: *** [timer.o] Error 1

というエラーが出てしまい、困っています。

% ls -l /var/tmp
合計 2086
-rw------- 1 matsui master 0 3月 13日 21:19 Ex0000001239
-rw------- 1 root root 821304 3月 14日 22:20 wsconAAA7eaqNa:0.0
-rw------- 1 root root 35659 2月 8日 19:05 wsconAAAP0aaNa:0.0
-rw------- 1 matsui master 0 1月 27日 17:44 wsconAAAXlaitb:0.0
-rw------- 1 root root 187687 2月 7日 19:31 wsconAAAxBaWxc:0.0

% df -k
Filesystem Kバイト used avail capacity Mounted on
/dev/dsk/c0t3d0s0 57567 21273 30538 42% /
/dev/dsk/c0t3d0s6 694454 497069 141829 78% /usr
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
/dev/dsk/c0t3d0s1 47975 44685 0 100% /var
/dev/dsk/c0t3d0s7 38383 14633 19912 43% /workl
swap 137384 16 137368 1% /tmp
lucas:/usr/local 1687016 824880 811528 51% /usr/local
lucas:/home 14110472 3550904 10418464 26% /home
lucas:/workn 57384 31880 19768 62% /workn

となっているのですがこれはどうすれば解決できるのでしょうか?

Solaris2.6の環境です。
C++プログラム初学者です。

% uname -a
SunOS ultra 5.6 Generic_105181-23 sun4m sparc SUNW,SPARCstation-5

C++プログラムの学習中にC++のリストをmake使用とすると

% cd ~/test

% make
g++ -c -o timer.o timer.cc
cpp0: /var/tmp/cczy3NgV.ii: デバイス上の空き領域が足りません。
make: *** [timer.o] Error 1

というエラーが出てしまい、困っています。

% ls -l /var/tmp
合計 2086
-rw------- 1 matsui master 0 3月 13日 21:19...続きを読む

Aベストアンサー

根本的な解決はNo.1で回答されている方のいう通りdisk full(空き領域なし)になっている/varの不要ファイルを削除して領域を空ける事ですが、そもそも/varの容量自体少ないようですから、こまめにチェックしてdisk fullが出ないようにしないといけないですよ。
/var配下のディレクトリに各種プログラムのログが出力されるでしょうからなおさらです。

また、今回は、

>コンパイル時には/var/tmp下に一時ファイルが生成されるのですね。
>この一時ファイルが生成できないと実行ファイルが生成できなくなってしまうのですね。

という不具合だけで済んでいるかもしれませんが、他に不具合が出てくる可能性も否めません。

あと、g++(C++)コンパイラの一時ファイルの作成先は、環境変数TMPDIRを設定する事によって/var/tmp以外にする事が可能です(一時的な回避策)。

Qjava string 配列の使用メモリ

String[][][] arg = = new String[x][x][x];
でxが638の時にjava.lang.OutOfMemoryErrorになってしまいます。
VM起動時のヒープ最大値は1GBまで試しましたがダメでした。

このときargオブジェクトはどれだけのメモリを必要とするのでしょうか?

Aベストアンサー

このnewで作られるオブジェクトは、配列オブジェクトだけです。Stringオブジェクト自体は作られません。
なので、オブジェクトのサイズとしては、配列オブジェクトのサイズだけを考えればよいことになります。
(ちなみに、メソッド本体はクラスに1つあるだけで、作成したオブジェクトの数だけできるわけではないですから、オブジェクトを作ると、新たにメソッドの分のメモリが必要になるわけではありません)

さて、argオブジェクトのサイズですが、1つのオブジェクトへの参照を保持するのにまず何バイトが必要か考える必要があります。
32bitのJavaだったら、たぶん32bit=4バイトでしょう。
この配列の要素数はx^3個ですので、1つあたりが4バイトとなると、x^3 * 4 バイトのメモリが最低限必要ということになります。
もちろん、他にも多少メモリが必要でしょうが、xが大きいときのことを考えるわけですし、無視しても問題ないでしょう。

x=638の場合を計算してみると、638^3 * 4 = 1038776288 となります。
これは約990MB で、だいたい1GBです。
ヒープの最大値を1GBで試したということですので、計算と合っているのではないでしょうか。

このnewで作られるオブジェクトは、配列オブジェクトだけです。Stringオブジェクト自体は作られません。
なので、オブジェクトのサイズとしては、配列オブジェクトのサイズだけを考えればよいことになります。
(ちなみに、メソッド本体はクラスに1つあるだけで、作成したオブジェクトの数だけできるわけではないですから、オブジェクトを作ると、新たにメソッドの分のメモリが必要になるわけではありません)

さて、argオブジェクトのサイズですが、1つのオブジェクトへの参照を保持するのにまず何バイト...続きを読む

QAIX/HP-UXでパスワード変更シェルを作成したい

AIX/HP-UXで一括でパスワード変更を実行するシェルを
作成したいと考えております。
(最終的には複数サーバの複数ユーザのパスワードを
 一括変更したい)
そこで、AIXで以下の様なシェルを作成したのですが、
パスワード変更することができませんでした。
--------------------------------------
PASS=$1   "新パスワード
USER=$2   "パス変するアカウント名

passwd $USER
sleep 5
$PASS
sleep 5
$PASS
--------------------------------------
passwdコマンド自体は実行されるのですが、
その後の新パスワードが入力されておらず、
passwdコマンドタイムアウト後に新パスワードが
実行され、"新パスワードの文字列"が見つかりません。
となってしまいます。
インターネット等で検索した結果、linuxであれば
expectコマンドを使用して、passwdコマンドを実行した
際に出力される「新パスワード:」を待ってから
入力すればよいということがわかったのですが、
linuxでexpectコマンドに相当するものを、AIXでは
見つけることができませんでした。

AIX/HP-UXにおいて、シェルスクリプトにてパスワード
変更を実現する方法をご存知の方がいましたら、
教えてください。
よろしくお願いします。

AIX/HP-UXで一括でパスワード変更を実行するシェルを
作成したいと考えております。
(最終的には複数サーバの複数ユーザのパスワードを
 一括変更したい)
そこで、AIXで以下の様なシェルを作成したのですが、
パスワード変更することができませんでした。
--------------------------------------
PASS=$1   "新パスワード
USER=$2   "パス変するアカウント名

passwd $USER
sleep 5
$PASS
sleep 5
$PASS
--------------------------------------
passwdコマンド自体は実行されるのです...続きを読む

Aベストアンサー

#1です。

少し調べてみたのですが、、、AIXはパスワード一括設定出来るコマンドはないようですね。
passwdコマンドも、パイプで入力を流し込んでやっても、どうやら内部で強制的に入力を端末に変えているようなので、結局どうやってもキーボードから入力するしかないようです。しかも、その辺の処理は正確に言うとpasswdコマンドではなくOS内部に組み入れられているようで、どうしようもなさそうです。

最終的には、自前でパスワード暗号化処理を行った上で、/etc/security/passwd ファイルを直接いじるくらいしか手がなさそうです。

がっかりさせるような回答で残念ですが、、、ご了承くださいませ。


人気Q&Aランキング

おすすめ情報