ユーティリティファイルのサイズを調べたい : sort プロシジャ details オプション - unix版SAS限定?
sortプロシジャは、実行しているとき、ユーティリティファイルという一時ファイルを作成します。そのファイルの中でソート処理が行われるわけですが、ユーティリティファイルの容量は、ソート対象のデータセットの 1~3倍くらい?のサイズになります。どのくらいのサイズになるかは、データセットがどのような構造をしているかなどで上下します。ユーティリティファイルは、ソートの終了とともに消えてしまうので、サイズを調べるのは少々面倒です。
sortプロシジャの details オプションは、ユーティリティファイルのサイズをログに出力してくれるオプションです。このオプションをつけることで、簡単にサイズがわかります。どんな風に出力してくれるかを見てみましょう。
71 option msglevel=i lognumberformat ; 72 73 proc sort data=TEST details ; 74 by R ; 75 run ; NOTE: ユーティリティファイルが必要です。 NOTE: ユーティリティファイル 1 のページサイズは 131072 バイトです。 NOTE: データセットWORK.TESTから100,000,000オブザベーションを読み込みました。 NOTE: ユーティリティファイル 1 には 100000000 レコードと 3 並べ替えられた実行が含まれます。 NOTE: ユーティリティファイル 1 は 30527 ページ (合計 3907456.00 KB) あります。 NOTE: SASスレッドソートを使用します。 NOTE: データセットWORK.TESTは100,000,000オブザベーション、3変数です。 NOTE: PROCEDURE SORT処理(合計処理時間): 処理時間 1:16.55 ユーザーCPU時間 1:20.44 システムCPU時間 7.35 秒 メモリ 3165715.60k OSメモリ 3193028.00k タイムスタンプ 2017/06/13 午前11:46:02 ステップ数 70 スイッチ数 56 ページフォルト回数 0 ページリクレーム回数 712755 ページスワップ回数 0 自発的コンテキストスイッチ回数 71106 非自発的コンテキストスイッチ回数 250 ブロック入力操作回数 0 ブロック出力操作回数 14092568
KB単位で、ユーティリティファイルのサイズを教えてくれます。
割り当てられているディスク容量が少ない環境では、SASプログラムがどの程度ディスク容量を使うかを調べなくてはなりません (使用容量100%になりかねないので)。本オプションを使うことで、最大使用容量を調べやすくなるかと思います。
ユーティリティファイルのサイズは必ず出力されるわけではなく、サイズが小さいデータセットの場合は出力されません。小さい大きいの基準は、SAS実行環境によって異なります。下記は、メモリ内でソートが行われた例です。
70 option msglevel=i lognumberformat ; 71 72 proc sort data=TEST details ; 73 by R ; 74 run ; NOTE: データセットWORK.TESTから1,000,000オブザベーションを読み込みました。 NOTE: メモリ内で並べ替えられました。 NOTE: SASスレッドソートを使用します。 NOTE: データセットWORK.TESTは1,000,000オブザベーション、2変数です。 NOTE: PROCEDURE SORT処理(合計処理時間): 処理時間 0.30 秒 ユーザーCPU時間 0.50 秒 システムCPU時間 0.08 秒 メモリ 58845.48k OSメモリ 85788.00k タイムスタンプ 2017/06/13 午前11:48:14 ステップ数 76 スイッチ数 35 ページフォルト回数 0 ページリクレーム回数 14304 ページスワップ回数 0 自発的コンテキストスイッチ回数 3033 非自発的コンテキストスイッチ回数 0 ブロック入力操作回数 0 ブロック出力操作回数 31752
もっと小さくなると、急に優しさがないメッセージが出力されます。小さい場合はユーティリティファイルを気にしなくてもいい、といえばいいのですが、、、
70 option msglevel=i lognumberformat ; 71 72 proc sort data=TEST details ; 73 by R ; 74 run ; NOTE: データセットWORK.TESTから10オブザベーションを読み込みました。 mempage=131072 alocsize=32800 isa=131072 osa=131072 xmisa=0 holds=4096 nway=1 sortsize=3221225472 memoryuse=163872.00 keylen=16 reclen=16 dkin=0 inrec=10 outrec=10 yieldobs=0 nruns=1 xcbpage=131072 npages=0 diskuse=0.00 NOTE: SASソートを使用しました。 NOTE: データセットWORK.TESTは10オブザベーション、2変数です。 NOTE: PROCEDURE SORT処理(合計処理時間): 処理時間 0.00 秒 ユーザーCPU時間 0.00 秒 システムCPU時間 0.00 秒 メモリ 791.84k OSメモリ 29608.00k タイムスタンプ 2017/06/13 午後12:33:53 ステップ数 82 スイッチ数 44 ページフォルト回数 0 ページリクレーム回数 89 ページスワップ回数 0 自発的コンテキストスイッチ回数 124 非自発的コンテキストスイッチ回数 0 ブロック入力操作回数 0 ブロック出力操作回数 264
ユーティリティファイルのサイズを教えてくれるありがたいオプション details ですが、たしか unix版SAS にしかなかった、、、気がします(うろ覚え)。unix版ユーザーはバシバシ使っていきましょう。
コメント
コメントを投稿