idlepcを使ってDynamipsのCPU負荷を下げる
さて、これで無事にCisco 7200がエミュレートできたわけだけど、CPUが全力運転してるはず。これは、IOSのIdleをMacBookのCPUが全力でエミュレートしてるから。これを回避するためのコマンドが、idlepc。要するに、動作してるエミュレータをしばらく観察して、IOSのIdleを検出しておき、Idleの間はエミュレーションをさぼる、というもの。
使い方は簡単。Dynagenのコンソールから、idlepc getコマンドを、エミュレートしてるrouterを指定して実行する。しばらくすると、Idleっぽい部分を探してきてくれる。Idleを検出するんだから、routerが起動してしばらくしてから実行するのがポイント。
=> idlepc get R1 Please wait while gathering statistics... 1: 0x607f0a10 [40] 2: 0x607f2550 [26] * 3: 0x607f255c [57] * 4: 0x607f3094 [58] 5: 0x60713acc [71] 6: 0x607f3c74 [46] * 7: 0x607f3cac [53] 8: 0x60895dec [21] 9: 0x60895df0 [24] 10: 0x6070f248 [78] Potentially better idlepc values marked with "*" Enter the number of the idlepc value to apply [1-10] or ENTER for no change:
おすすめの設定まで提示してくれるから親切だね。数字で選択してENTERで選択、しばらく様子を見てみよう。CPU使用率が下がったら、それが正解。CPU使用率が下がらなかったら、別の値を試してみよう。
=> idlepc set R1 0x607f2550
無事に正解の値をsetできたら、次回以降もその値を使用するようにNetwork Fileに書き込もう。idlepcの値は、routerごとでも、機種ごと(Cisco 7200全部、とか)でも保存できる。IOSのバージョンが違うと、適切な値が異なるから要注意。
=> idlepc save R1 default (同機種すべてのdefault値として保存) => idlepc save R1 (router R1用にのみ保存) => idlepc save R1 db (Dynamips共通のデータベースに、IOSのイメージ名をキーにして保存)