ksh93スクリプトでメモリ使用量を追跡する方法

ksh93スクリプトでメモリ使用量を追跡する方法

私たちは永遠に(whileループ内で)、または少なくとも終了イベントが送出されるまで実行されるいくつかのkshスクリプトを持っています。私たちはこれらのスクリプトをksh93に変換し、機能を追加し、OSをAIX 5.3から6.1にアップグレードしたプロジェクトを進めています。 kshスクリプトはAIX 5.1で問題なく実行されます。これで、ksh93、AIX 6.1に変換して機能を追加したので、プロセスのメモリが制限を超えるまで増え続けることがわかります。メモリしきい値に達すると、プロセスを終了して再開するロジックを追加する必要がありました。

私たちはいくつかのksh93関数にメモリリークがあると仮定しました(おそらく間違っているかもしれません)。

メモリを解放しない特定の関数があることを確認しようとしています。私が使ってきたプロセスメモリを取得するには、svmon -P $$ | grep $$ | awk '{ print $3 }'おそらくより良い方法があります。

以下は、スクリプトのさまざまな時点でのsvmonコマンドの出力です。外部の「while」ループの下部を表示するために「ループの終わり」を追加しました。値が開始値の近くに低下する断続的な読み取りを除いて、メモリ使用量が増加し続けることを確認できます。低点以降の次の数値は、低点前の数値に従うように見えるため、これらの低い値が間違っていると推測しています。低い値を削除すると、メモリ使用量が増え続けます。このスクリプトは、他のプロセスが存在することを確認する監視スクリプトです。他のプロセスのスクリプトも同じタイプの動作を示します。

メモリ使用量を確認するより良い方法はありますか?メモリを正しく解放しない一般的なksh93機能を知っている人はいますか? IBMはAIX 7.xにアップグレードすることをお勧めしますが、これは現在不可能です。

今警告する必要があります。私はkshスクリプト開発者ではなくDBAです。

28721   
Start-Of-Loop   
28435   <--- low value  
28733   
28737   
28740   
28745   
28747   
28435   <--- low value   
28755   
28759   
28762   
28767   
28770   
28774   
28777   
28780   
28783   
28787   
28791   
28806   
28809   
28813   
28817   
28822   
28825   
28828   
28831   
28833   
28835   
28835   
28838   
28839   
28843   
28843   
28843   
28435   <--- low value   
28843   
28843   
28846   
28846   
28847   
28408   <--- low value   
28853   
28853   
28853   
28408   <--- low value  
28854   
28854   
28857   
28857   
28859   
28860   
28863   
28863   
28864   
28865   
28867   
28869   
28871   
28874   
28878   
28878   
28879   
28879   
28882   
28882   
28883   
28884   
28887   
28888   
28891   
28891   
28435   <--- low value  
28894   
28897   
28898   
28901   
28436   <--- low value  
28904   
28904   
28906   
28906   
28910   
28910   
28914   
28407   <--- low value  
28917   
28435   <--- low value  
28921   
28923   
28927   
28927   
28930   
28436   <--- low value  
28935   
28935   
28935   
28938   
28942   
28942   
28435   <--- low value  
28946   
28948   
28950   
28953   
28953   
28953   
28953   
28953   
28953   
28957   
28957   
28958   
28958   
28959   
28959   
28961   
28962   
28965   
28408   <--- low value  
28966   
28966   
28967   
28968   
28970   
28971   
28974   
28974   
28975   
28975   
28976   
28976   
28408   <--- low value  
28978   
28978   
End-Of-Loop  
28436   <--- low value  
28982   
28982   
28983   
28408   <--- low value  
28984   
28984   
28985   
28440   <--- low value  
28989   
28990   
28436   <--- low value  
28991   
28991   
28991   
28991   
28991   
28994   
28995   
28995   
28995   
28995   
28997   
29001   
29004   
29008   
28435   <--- low value  
29008   
29008   
28408   <--- low value  
29011   
29011   
29011   
29015   
29015   
29019   
29019   
29019   
29019   
29020   
28435   <--- low value  
29025   
29026   
29028   
29030   
29033   
29033   
28435   <--- low value  
29035   
29039   
28436   <--- low value  
29039   
29039   
29041   
29043   
28408   <--- low value  
29047   
29050   
29050   
29052   
29052   
29055   
29055   
29057   
29057   
29058   
28408   <--- low value  
29061   
29062   
29067   
29067   
29068   
28408   <--- low value  
29069   
29070   
29075   
28408   <--- low value  
29076   
29076   
29076   
28408   <--- low value  
28408   <--- low value  
28435   <--- low value  
29080   
29083   
28408   <--- low value  
29087   
29089   
29089   
29092   
29094   
28430   <--- low value  
29097   
29100   
29101   
29103   
28408   <--- low value  
29103   
29103   
29104   
29104   
28435   <--- low value  
29107   
28408   <--- low value  
29111   
29113   
29114   
29117   
29117   
29120   
29120   
29122   
29122   
29124   
29124   
29127   
29127   
29129   
29129   
28408   <--- low value  
29134   
29135   
29135   
29135   
29135   
29139   
29139   
29139   
29139   
28440   <--- low value  
29139   
28435   <--- low value  
28408   <--- low value  
29139   
End-Of-Loop  
29141   
29145   
29145   
29147   
28435   <--- low value  
29150   
29150   
29153   
29153   
29155   
29157   
29157   
29157   
29157   
29157   
29159   
29159   
29159   
29159   
29163   
29163   
29167   
29169   
29172   
29172   
29175   
29175   
29177   
29177   
29177   
29179   
28435   <--- low value  
29181   
29186   
29186   
29189   
29189   
29191   
29193   
29196   
29196   
29198   
29198   
29199   
29200   
29202   
29202   
29205   
29205   
28435   <--- low value  
29209   
29211   
28435   <--- low value  
29216   
29217   
29220   
28435   <--- low value  
29225   
29225   
28433   <--- low value  
29227   
28433   <--- low value  
29229   
29230   
29231   
29233   
29233   
29235   
29237   
29238   
29239   
29244   
29247   
29250   
29252   
29258   
29260   
29263   
29264   
29268   
29269   
29271   
29271   
29274   
29274   
28435   <--- low value  
28408   <--- low value  
29283   
29286   
29287   
29291   
29291   
29295   
29295   
29295   
29299   
29303   
29303   
29306   
29306   
29308   
29310   
29312   
28440   <--- low value  
29312   
29312   
29317   
29318   
29322   
29322   
29323   
29323   
28408   <--- low value  
28407   <--- low value  
29327   
29327   
29329   
29329   
28435   <--- low value  
29329   
29330   
29331   
28437   <--- low value  
29333   
29336   
29336   
29336   
29336   
29336   
29336   
29336   
29336   
29336   
End-Of-Loop  
29338   
29342   
29343   
29343   
29345   
29347   
28435   <--- low value  
28435   <--- low value  
29349   
29349   
29351   
29353   
29353   
29354   
29354   
29354   
29354   
29354   
28436   <--- low value  
28408   <--- low value  
29356   
29357   
29357   
29361   
29361   
28435   <--- low value  
29361   
29363   
29363   
29366   
29367   
29373   
28408   <--- low value  
29376   
29376   
29380   
28407   <--- low value  
28435   <--- low value  
29381   
28440   <--- low value  
29387   
29387   
29390   
29394   
29394   
28436   <--- low value  
29396   
29398   
29399   
29401   
29401   
29402   
29402   
29403   
29404   
29406   
28436   <--- low value  
29411   
28408   <--- low value  
29417   
29417   
29418   
29419   
29421   
29421   
29423   
29424   
29426   
29426   
28408   <--- low value  
29431   
29435   
29435   
28435   <--- low value  
29439   
29442   
29444   
28435   <--- low value  
29447   
29449   
29449   
29451   
29451   
29455   
29455   
28435   <--- low value  
29458   
29461   
29462   
29465   
29467   
28408   <--- low value  
29470   
29473   
29475   
29478   
29479   
29483   
29483   
29485   
29485   
29488   
29488   
29489   
29489   
29489   
29489   
29491   
29492   
29493   
29493   
29495   
29497   
29501   
29503   
29504   
29504   
29506   
29508   
29509   
29511   
29515   
29515   
29519   
29519   
28436   <--- low value  
29521   
28408   <--- low value  
29522   
29523   
28435   <--- low value  
29523   
29523   
29523   
End-Of-Loop  

関連情報