RH 442攻略のリソース制限

2674 ワード

ここでは前置きは必要ありません.
limit.conf#パスpam_limit.soリソース制限時に使用するプロファイル
kernelのオンデマンド遅延割り当て技術のため、プログラムが申請したダミーメモリサイズは、必ずしも実際のメモリ割り当てサイズに等しくない.
rss(Resident Set Size)メモリ常駐サイズ、kernelが実際に割り当てたメモリサイズ.トップコマンドのRESに対応します.
pamのlimit.を通ってconfは現在rssサイズを制限できません
As(Address Size)はアドレス空間を虚存し、プログラムが使用するメモリ空間の大きさである.トップコマンドのVIRTに対応します.
現在のユーザーのlimit制限をulimitクエリーで変更すると、一般ユーザーはソフトウェア制限のみを変更でき、rootユーザーはlimit.を変更できます.confによりhard制限を変更
limit.conf制限CPU時間単位は分、ulimitは秒単位で調整します.
ulimitとlimitはディスクI/Oを制限することができなくて、CPUとメモリの制限に対して基礎を比較します
---------------------
cgroupはシステムをcpu,memory,blkioなどの複数のcontrollerに分ける
プロセスはcgredサービスによってcgroupサブシステムに定義され、制限の目的を達成する.
cgconfigサービスが開始されると、ルートディレクトリの下に/cgroupディレクトリが生成され、各コントローラは個別にフォルダ(cgroupサブシステム)に対応します.現在のcontrollerとサブシステムフォルダの対応関係はlssubsys-mで表示できます.
コントロールが生成するディレクトリは/etc/cgconfigに基づいている.confは、同じコントローラが1つのフォルダにしか対応できないことを生成し、同じフォルダが複数のコントローラに対応できることを生成します.
cgroupの構成は/etc/cgconfigに保存する.conf、カスタムcgroupもここで構成します
#cgroup       
cgroup lesscpu{
#lesscpu cgroup  
    cpu{
#controller cpu  ,          cpu  
        cpu.shares = 100;
#cpu   ,     controller  ,        controller  
    }
}
cgroup morecpu{
    cpu{
        cpu.shares = 300;
#      ,     lesscpu,   cpu   ,morecpu    cpu  
    }
}

cgexec指定コマンドでcgroupを呼び出します.
cgexec -g cpu:lesscpu command
#             cgroup  。

以下はメモリ制限の書き方です
cgroup lessmem{
    memory{
        memory.limit_in_bytes = 536870912;
#       512M  ,            。
        memory.memsw.limit_in_bytes = 536870912;
#    +          512M  ,       ,          
    }
}

このcgroupを適用するプログラムが制限を超えるメモリを使用すると、プロセスはkillされます.
次はディスクI/O制限の書き方です
group lowio{
    blkio{
    blkio.weight=100;
#blkio.weight     cfq       ,       
    }
}
group highio{
    blkio{
    blkio.weight=200;
    }
}
group ddio{
    blkio{
    blkio.throttle.read_bps_device="8:0 1000000";
#     scsi       1m(ll /dev/sda    8:0    )
    }
}

cgroupのルール構成は/etc/cgrulesに書き込まれる.conf、プロファイルの書き方とlimit.confファイル類似
user:program controller cgroupサブシステム
vim /etc/cgrules.conf
cat /etc/cgrules.conf
john:dd    blkio    ddio/
*:dd    blkio    ddio/
john:*    cpu    lesscpu/

構成が完了したら、サービスcgred restartでこのプロファイルを再ロードします.
cgroupは、指定されたプロセスをフリーズすることもできます.構成の書き方は次のとおりです.
group stopit{
    freezer{
    }
}
#freezer       
echo pid > /cgroup/freezer/stopit/tasks
#           tasks 
echo FROZEN > /cgroup/freezer/stopit/freezer.state
#      ,   tasks       
echo THAWED > /cgroup/freezer/stopit/freezer.state
#