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のイメージ名をキーにして保存)