<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Unofficial Tech Memo - Koji Komatsu</title>
    <link>http://communities.vmware.com/blogs/kkomatsu</link>
    <description>このblogは小松康二の個人的なメモですのでサポート外の設定や勘違い等が含まれている可能性があります</description>
    <pubDate>Wed, 29 Jul 2009 13:41:59 GMT</pubDate>
    <generator>Clearspace 1.10.12 (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2009-07-29T13:41:59Z</dc:date>
    <item>
      <title>無償版ESXiでのRemote CLIの利用制限</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2009/07/29/-esxi-remote-cli-</link>
      <description>下記のKBに記載されているように、無償版ライセンスのESXiでは、Remote CLI (現 vSphere CLI) のコマンドによる一元管理は、Read Onlyの操作のみが使用許可されている。&lt;br /&gt;
&lt;br /&gt;
VMware ESX and ESXi 3.5 Comparison&lt;br /&gt;
&lt;a class="jive-link-external" href="http://kb.vmware.com/kb/1006543"&gt;http://kb.vmware.com/kb/1006543&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
今までこの制限は紳士協定で、機能的には動いてしまっていたが、3.5 Update4では実際に機能的な制限をかけはじめている模様。&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-thread" href="http://communities.vmware.com/thread/203414"&gt;http://communities.vmware.com/thread/203414&lt;/a&gt;&lt;br /&gt;
&lt;a class="jive-link-message" href="http://communities.vmware.com/message/1213115#1213115"&gt;http://communities.vmware.com/message/1213115&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;2009年10月29日追記&lt;/h5&gt;
&lt;br /&gt;
ESX / ESXi 4.0について新しいKBがでていた&lt;br /&gt;
&lt;br /&gt;
VMware ESX and ESXi 4.0 Comparison&lt;br /&gt;
&lt;a class="jive-link-external" href="http://kb.vmware.com/kb/1015000"&gt;http://kb.vmware.com/kb/1015000&lt;/a&gt;</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esxi</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">cli</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">license</category>
      <pubDate>Wed, 29 Jul 2009 13:41:47 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2009/07/29/-esxi-remote-cli-</guid>
      <dc:date>2009-07-29T13:41:47Z</dc:date>
      <clearspace:dateToText>3 months, 3 weeks ago</clearspace:dateToText>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/-esxi-remote-cli-</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=4822</wfw:commentRss>
    </item>
    <item>
      <title>仮想マシンのモニターモード(VMMの実行モード)を確認する</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2009/07/26/-vmm-</link>
      <description>&lt;h5&gt;ESX3.xまでのCPU命令の処理&lt;/h5&gt;
&lt;br /&gt;
x86のサーバ仮想化においてCPU命令の大半は物理CPUに直接わたされるが、特権命令やセンシティブ命令は直接実行させず安全に処理する必要がある。その方式として、ハイパーバイザのソフトウェア処理のみで実現するバイナリ変換(Binary Translation)という方式、物理CPUの仮想化支援機能(Intel-VT/AMD-V)を使用する方式、ゲストOSをハイパーバイザと協調するようにあらかじめ書き換えるOS準仮想化(Paravirtualization)の3つの方式が存在する。これらはESXではVMM(Virtual Machine Monitor)の実行モードとも呼ばれる。&lt;br /&gt;
&lt;br /&gt;
ESXはハイパーバイザとしてはバイナリ変換を実装する唯一の製品であり、かつ、バイナリ変換を主たる方式として採用してきた。&lt;br /&gt;
&lt;br /&gt;
物理CPUによる仮想化支援のうち、CPUコマンドの処理を支援する機能はIntelではVT-xと呼んでいる。ESXがこれまでVT-xをほとんど利用してこなかった理由はいくつかあるが、主だった理由は下記の2つだ。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;特権命令やセンシティブな命令を安全に処理するVMX Rootモードと、一般的なCPU命令を処理するVMX non-rootモードを切り替えるVMEnter/VMExitの際の遅延が大きい (VMCALL/VMRESUMEコマンドの遅延が大きい)&lt;/li&gt;
&lt;li&gt;モードの切り替えの際に、TLBを完全にフラッシュされてしまう&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
モードの変更はVT-xによるサーバ仮想化のまさに中核となる部分であり、これが遅いということは致命的だ。また、全ゲストOS上の処理についてTLBのミスヒット率が高まってしまう影響も甚大だ。要は、VT-xの初期技術は、サーバ仮想化を容易にする(ハイパーバイザで処理する内容が少なくてすむ)かわりに遅くなるという、従来からサーバ仮想化を安全に実現できていたESXからみるとほとんど魅力のない技術だったのだ。&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;ESX4でのCPU仮想化支援機能の利用&lt;/h5&gt;
&lt;br /&gt;
ところが、その後の開発でCPU支援機能も魅力的になってきた。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;VMCALL/VMRESUMEコマンドの処理が最適化され遅延が大幅に小さくなってきた&lt;/li&gt;
&lt;li&gt;Intel VPID(Virtual Processor ID)、AMD Tagged TLB によって、TLBのフラッシュが全仮想マシンに影響しなくなった&lt;/li&gt;
&lt;li&gt;Intel EPT(Extended Page Tables)、AMD RVI(Rapid Virtualization Indexing)によって、ページテーブル管理のオーバーヘッドの削減が利用できるようになった&lt;/li&gt;
&lt;li&gt;Intel FlexPriorityによる割り込み処理のオーバーヘッドの削減できるようになった&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
ただ、これらの魅力は物理CPUの世代に大きく依存する。Intelを例に挙げれば、FlexPriorityはPenryn以降で利用できるが、EPTやVPIDはNehalem以降で対応する。また、FlexPriorityはゲストOSによっても効果の程に違いがある。&lt;br /&gt;
そこで、ESX4は物理CPUの世代とゲストOSの種類に応じて、最も高速に動作すると期待される方式を、個々の仮想マシンの起動時に自動的に選択するようになった。この選択基準をまとめた表を&lt;a href="http://communities.vmware.com/people/drummonds" class="jive-link-profile"&gt;drummonds&lt;/a&gt;が下記に公開している。&lt;br /&gt;
&lt;br /&gt;
&lt;a class="jive-link-wiki" href="http://communities.vmware.com/docs/DOC-9882"&gt;ESX Monitor Modes&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2009年10月29日追記 - 下記のテクニカルペーパーでvSphereでの実行モードの選択の詳細が正式公開されている&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.vmware.com/resources/techresources/10060"&gt;http://www.vmware.com/resources/techresources/10060&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
実に複雑に見えるが、おおよそ下記のように理解できる。(Intelの場合)&lt;br /&gt;
・EPTが利用できる場合は利用する。この際、VT-xは必須。&lt;br /&gt;
・上記以外では、45nm Core2 以降のCPUはモード切り替えの遅延が小さいためVT-xを使用する。&lt;br /&gt;
・上記以外ではバイナリ変換を利用する。&lt;br /&gt;
例外が多いが理由は様々だ。たとえば、レガシーなWindowsでは特権命令の一部にCPU命令の正しい使い方に沿っていないものがあり、バイナリ変換の際にその不具合を効率よく回避している。&lt;br /&gt;
&lt;br /&gt;
さて、この選択だが手動で変更することも可能だ。&lt;br /&gt;
EPTやRVIはページテーブルの管理コストを削減するもので、メモリアクセスを高速化する技術ではない。ページテーブルの管理(プロセスの生成や動的なメモリ割り当て、コンテキストスイッチ)がほとんど発生しない環境で、TLBにヒットしない論理メモリアドレスへのアクセスが発生すると、物理CPUのMMUがシャドウページによって1段階でアクセスできる従来の方式の方が高速に動作するという例外的な環境もありえる。&lt;br /&gt;
&lt;br /&gt;
このあたりの詳細はEPTやRVIを使用した場合のESXのパフォーマンスについて言及した下記資料が詳しい。&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.vmware.com/resources/techresources/10006"&gt;http://www.vmware.com/resources/techresources/10006&lt;/a&gt;&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.vmware.com/resources/techresources/1079"&gt;http://www.vmware.com/resources/techresources/1079&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;実際に利用されているMonitor Modeの確認&lt;/h5&gt;
&lt;br /&gt;
実際に手動で指定したMonitor Modeで仮想マシンが動作できるかは、物理CPUの世代等に依存する。最終的に、仮想マシン起動時にMonitor Modeとして何が選択されたかをみるには、データストア上のvmware.logを参照することになる。&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.vmware.com/resources/techresources/10036"&gt;http://www.vmware.com/resources/techresources/10036&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
一例を挙げると、下記の出力である。&lt;br /&gt;
BTはバイナリ変換、HVはCPUの仮想化支援、HWMMUはさらにETPもしくはRVIを使用するモードを示す。&lt;br /&gt;
allowed modesは使用可能なモードで、64bit ゲストOSはBTでは動作しないし、古いCPUではHWMMUは使用できないなどの判断が含まれている。user requested modesは手動で設定したモード、guestOS preferred modesは先のDOC-9882に記載されているデフォルトの優先順位であり、最後のfiltered listに、選択されたMonitor Modeが記載されている。&lt;br /&gt;
例では、本来VT-x + EPTが優先される構成だが、ユーザが指定したバイナリ変換が選択されたことを示す。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="jive-quote"&gt;Apr 22 18:56:07.363: vmx| MONITOR MODE: allowed modes : BT HV HWMMU&lt;br /&gt;
Apr 22 18:56:07.363: vmx| MONITOR MODE: user requested modes : BT&lt;br /&gt;
Apr 22 18:56:07.363: vmx| MONITOR MODE: guestOS preferred modes: HWMMU HV BT&lt;br /&gt;
Apr 22 18:56:07.363: vmx| MONITOR MODE: filtered list : BT&lt;br /&gt;
Apr 22 18:56:07.363: vmx| Msg_Hint: msg.cpuid.LMwithBT (sent)&lt;br /&gt;
Apr 22 18:56:07.363: vmx| Software virtualization is incompatible with long mode on Intel EM64T CPUs. Virtual execution will begin in software mode, but will automatically switch to hardware mode if the guest enters long mode.&lt;/div&gt;
なお、最後に書かれているように、仮想マシンの設定で32bitゲストOSを指定しているのに、64bitゲストOSをインストールしてしまったような場合、上記でバイナリ変換が選択されても、64bitでのCPU命令が確認されたタイミングでバイナリ変換不能ということでモードが切り替わるケースがありえる。&lt;br /&gt;
&lt;br /&gt;
&lt;h5&gt;(補足) ESX3.xまでのCPU仮想化支援機能の利用について&lt;/h5&gt;
&lt;br /&gt;
前述のTechnical Paper(10036)に詳細が記載されているが、ESX3.xも64bit OSをゲストOSとして使う場合など、バイナリ変換ではなくCPUの仮想化支援機能を利用してきた。&lt;br /&gt;
また、Intel FlexMigrationやAMD Extended Migrationは、CPU命令の仮想化としてVT-xやAMD-Vを利用していなくても利用できるため、ESX3.5でバイナリ変換を利用してる仮想マシンでも、EVC(Enhanced VMotion Compatibility)を使う場合には利用されている。</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">vmm</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">cpu</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">performance</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <pubDate>Sun, 26 Jul 2009 12:56:49 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2009/07/26/-vmm-</guid>
      <dc:date>2009-07-26T12:56:49Z</dc:date>
      <clearspace:dateToText>4 months, 2 weeks ago</clearspace:dateToText>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/-vmm-</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=4749</wfw:commentRss>
    </item>
    <item>
      <title>VMware Toolsでの一括アップデートをゲスト再起動なしで実施する</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2009/04/08/vmware-tools-</link>
      <description>VI Toolkit for Windows (通称VI PowerShell)には、Update-Toolsというコマンドレットがある。これはゲストOSにインストールされたVMware Toolsをアップデートするためのもの。ただし、Toolsアップグレード後に自動的にゲストOSの再起動がかかってしまう。こういった場合にはGet-Viewを使うのが定石。Pabloがコミュニティでのディスカッションを紹介している。&lt;br /&gt;
&lt;br /&gt;
Installing VMware Tools without a reboot ...&lt;br /&gt;
&lt;a class="jive-link-blogpost" href="http://communities.vmware.com/blogs/DeveloperCenter/2008/12/30/installing-vmware-tools-without-a-reboot-"&gt;http://communities.vmware.com/blogs/DeveloperCenter/2008/12/30/installing-vmware-tools-without-a-reboot-&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
How to install VMware tools without a reboot?&lt;br /&gt;
&lt;a class="jive-link-thread" href="http://communities.vmware.com/thread/168530"&gt;http://communities.vmware.com/thread/168530&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
結論的には下記のように書くのがベストプラクティスのようだ。(Windowsゲスト限定)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-plain"&gt;$insParm = '/s /v&amp;quot;/qn /norestart&amp;quot;'
$updList = Get-VM | Where-Object {$_.PowerState -eq &amp;quot;PoweredON&amp;quot;} | % {Get-View $_.ID} | Where-Object {$_.guest.toolsstatus -match &amp;quot;toolsOld&amp;quot; } | Where-Object {$_.guest.guestfamily -match &amp;quot;windowsGuest&amp;quot;}
foreach ($uVM in $updList) {
    $uVM.Name
    $uVM.UpgradeTools_Task($insParm)
    #Wait 30 seconds before starting another update task
    Start-Sleep -s 30
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
ポイントはToolsのアップグレードをサイレントかつ自動再起動なしで実施するパラメータを指定していること。もちろん、ゲストを再起動する必要性そのものがなくなるわけではないので、一括アップグレード後に、必要な順序で管理者が再起動をかけていくことになる。再起動されるまでも、VI Clientには、ToolsのバージョンがOKと出てしまうので、どれが最新かどうか分からなくならないように注意も必要。&lt;br /&gt;
&lt;br /&gt;
なお、日本語ゲストOSの場合でToolsのアップグレードがエラーでとまってしまう問題は、ESX3.5 Update4で解消されている。したがって、日本語環境ではそれ以降のバージョンであることが前提。&lt;br /&gt;
&lt;br /&gt;
ESX3.5 Update4 Release Notes&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.vmware.com/support/vi3/doc/vi3_esx35u4_rel_notes.html"&gt;http://www.vmware.com/support/vi3/doc/vi3_esx35u4_rel_notes.html&lt;/a&gt;&lt;br /&gt;
&lt;p /&gt;
&lt;h5&gt;2009年11月23日追記&lt;/h5&gt;
vSphere PowerCLI 4.0 Update1 で Update-Tools コマンドレットが拡張され、-Noreboot オプションをつけるだけで上記と同じことができるようになった。詳細は下記の PowerCLI Cmdlets References を参照。&lt;br /&gt;
&lt;a class="jive-link-external" href="http://www.vmware.com/support/developer/windowstoolkit/wintk40u1/html/Update-Tools.html"&gt;http://www.vmware.com/support/developer/windowstoolkit/wintk40u1/html/Update-Tools.html&lt;/a&gt;</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">api</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">automation</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">windows</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">sdk</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">powershell</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">tools</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">vmtools</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <pubDate>Wed, 08 Apr 2009 14:15:27 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2009/04/08/vmware-tools-</guid>
      <dc:date>2009-04-08T14:15:27Z</dc:date>
      <clearspace:dateToText>10 months, 3 weeks ago</clearspace:dateToText>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/vmware-tools-</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=2407</wfw:commentRss>
    </item>
    <item>
      <title>仮想マシン・仮想ディスク単位でのI/O遅延を確認する</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2009/01/22/-io-</link>
      <description>これもサポート外だと思うが、パフォーマンスの調査で有効かもしれない。&lt;br /&gt;
ESXでサービスコンソールにログインしてvscsiStatsコマンドを使用することで、仮想ディスク単位でI/O遅延を確認することができる。&lt;br /&gt;
&lt;br /&gt;
まず、下記のコマンドを実行し、仮想マシンと仮想ディスクの識別IDを確認する。&lt;br /&gt;
&lt;div class="jive-quote"&gt;
/usr/lib/vmware/bin/vscsiStats -l&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
出力例&lt;br /&gt;
&lt;div class="jive-quote"&gt;
Virtual Machine worldGroupID: 1632, Virtual Machine Display Name: vmname {&lt;br /&gt;
   Virtual SCSI Disk handleID: 8397&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
上記のworldGroupID、handleIDを利用する。&lt;br /&gt;
&lt;br /&gt;
統計情報の収集開始&lt;br /&gt;
&lt;div class="jive-quote"&gt;
/usr/lib/vmware/bin/vscsiStats -i 8397 -w 1632 -s&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
統計情報の表示&lt;br /&gt;
&lt;div class="jive-quote"&gt;
/usr/lib/vmware/bin/vscsiStats -i 8397 -w 1632 -p latency&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
統計情報の収集終了&lt;br /&gt;
&lt;div class="jive-quote"&gt;
/usr/lib/vmware/bin/vscsiStats -i 8397 -w 1632 -x&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
統計情報の出力例。I/O遅延の分布や最小値、最大値なども確認できる。単位はmicro sec。&lt;br /&gt;
&lt;div class="jive-quote"&gt;
Histogram: latency of IOs in Microseconds (us) for virtual machine worldGroupID : 1632, virtual disk handleID : 8397 {&lt;br /&gt;
 min : 491&lt;br /&gt;
 max : 14161&lt;br /&gt;
 mean : 4582&lt;br /&gt;
 count : 27&lt;br /&gt;
   {&lt;br /&gt;
      0                  (&amp;lt;=                  1)&lt;br /&gt;
      0                  (&amp;lt;=                 10)&lt;br /&gt;
      0                  (&amp;lt;=                100)&lt;br /&gt;
      1                  (&amp;lt;=                500)&lt;br /&gt;
      0                  (&amp;lt;=               1000)&lt;br /&gt;
      23                 (&amp;lt;=               5000)&lt;br /&gt;
      3                  (&amp;lt;=              15000)&lt;br /&gt;
      0                  (&amp;lt;=              30000)&lt;br /&gt;
      0                  (&amp;lt;=              50000)&lt;br /&gt;
      0                  (&amp;lt;=             100000)&lt;br /&gt;
      0                  (&amp;gt;              100000)&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
latency以外に、ioLength, seekDistance, outstandingIOs, interarrival が確認できる。&lt;br /&gt;
csvでの書き出し（-c オプション）もある。&lt;br /&gt;
&lt;br /&gt;
ESX3.0.xでは、コマンドはあるものの -l オプションがないため、識別IDの確認方法が不明。</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">scsi</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">disk</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">storage</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">latency</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">statistics</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">performance</category>
      <pubDate>Fri, 23 Jan 2009 03:15:18 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2009/01/22/-io-</guid>
      <dc:date>2009-01-23T03:15:18Z</dc:date>
      <clearspace:dateToText>10 months, 5 days ago</clearspace:dateToText>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/-io-</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=2478</wfw:commentRss>
    </item>
    <item>
      <title>esxtopバッチモードの出力をperfmonでグラフ表示する</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2009/01/17/esxtop-perfmon-</link>
      <description>&lt;b&gt;esxtopバッチモード&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
esxtopはESXのサービスコンソールで使用可能なパフォーマンス情報を表示するコマンド。ESXiの場合、Remote CLIやVIMAの仮想アプライアンスでresxtopとして同等のコマンドが用意されている。位置づけとしては通常時の継続的なパフォーマンス監視というよりは調査目的であるため、対話モードで使用することが一般的だが、バッチモードを使用するとパフォーマンス情報が標準出力にcsvフォーマットで出力されるため、ファイルにリダイレクトして別用途で使用することができる。&lt;br /&gt;
(VI Clientではパフォーマンスチャートの内容をMS Excelフォーマットで保存することができる。)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;バッチモードを使用する一般的な手順&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
手っ取り早く使うには、下記のコマンドを使用する&lt;br /&gt;
&lt;br /&gt;
&lt;div class="jive-quote"&gt;
esxtop -b -a -n 1 &amp;gt; esxtop_output.csv&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
-bがバッチモードを指定している。-aは全項目を出力することを示している。-nは表示する統計回数である。-nを省略した場合、適当なタイミングでCtrl-Cを押せばよい。&lt;br /&gt;
&lt;br /&gt;
さて、全項目を出力するとデータ量が大きくなりがちなので、通常は項目を指定しておく。esxtopを対話モードで使用し、c/m/d/nキーなどで使用する画面を選択し、fキーで項目を選択した後、Wキーで設定を保存する。バッチモードでこの設定を指定することで、取り出したいデータだけを対象とすることができるのである。&lt;br /&gt;
なお、設定ファイルは複数つくることができるので、パターンを複数用意することも可能。例えば下記のようになる。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="jive-quote"&gt;
esxtop -b -c .esxtop_any_config -n 1000 &amp;gt; esxtop_output.csv&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
なお、esxtopの項目の説明については、マニュアル「リソース管理ガイド」や&lt;a href="http://communities.vmware.com/docs/DOC-9279" class="jive-link-wiki"&gt;Interpreting esxtop Statistics&lt;/a&gt;を参照されたい。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;パフォーマンスモニタ(perfmon)での表示&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
バッチモードで書き出したcsvファイルは如何様にも使用できるが、グラフィカルなグラフにしたいなら、Windowsのパフォーマンスモニタ(perfmon)を使用することもできる。&lt;br /&gt;
手順は下記のとおり。&lt;br /&gt;
&lt;br /&gt;
１．パフォーマンスモニタを立ち上げる（perfmonコマンド）&lt;br /&gt;
２．グラフを右クリックし、ドロップダウンリストから「プロパティ」を選択&lt;br /&gt;
３．開いた画面で「ソース」タブに切り替え&lt;br /&gt;
４．データソースセクションで「ログファイル」ラジオボタンを選択&lt;br /&gt;
５．「追加」ボタンをクリックし、esxtopのcsvファイルを選択&lt;br /&gt;
６．「OK」ボタンをクリックして画面を閉じる&lt;br /&gt;
７．再度グラフを右クリックし「カラムの追加」を選択&lt;br /&gt;
８．「次のコンピュータからカウンタを選ぶ」で、esxtopを取得したホストが選択されていることを確認し、表示したい項目を選択し「追加」する&lt;br /&gt;
９．必要な項目の追加が終わったら「閉じる」ボタンで画面に戻る&lt;br /&gt;
&lt;p /&gt;
&lt;br /&gt;
&lt;b&gt;補足&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
VI Clientではパフォーマンスチャートの内容をMS Excelフォーマットで保存することができる。</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esxtop</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">performance</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">statistics</category>
      <pubDate>Sun, 18 Jan 2009 06:46:59 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2009/01/17/esxtop-perfmon-</guid>
      <dc:date>2009-01-18T06:46:59Z</dc:date>
      <clearspace:dateToText>10 months, 1 week ago</clearspace:dateToText>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/esxtop-perfmon-</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=2457</wfw:commentRss>
    </item>
    <item>
      <title>LinuxゲストOS上でタイマー割り込みの回数を確認する</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2009/01/17/linux-os-</link>
      <description>&lt;b&gt;LinuxゲストOSでの時刻同期&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
LinuxゲストOSでは、Kernelのバージョンによって時刻のずれを避けるための考慮が必要だったりする。最も一般的な設定としては、下記の３つ。&lt;br /&gt;
&lt;br /&gt;
１．VMware Toolsの時刻同期機能を有効にする&lt;br /&gt;
これはESX3.5であれば、VI Clientで仮想マシンの設定項目に存在する「ホストとゲスト時間を同期」にチェックを入れるか、VMware Toolsの設定画面で有効にする。&lt;br /&gt;
&lt;br /&gt;
２．grub.confでタイマーデバイス選択を制御する&lt;br /&gt;
かつては何を書くかで議論が絶えなかったが、今は下記の表であてはまるものをとりあえず盲目的に書いておく。&lt;br /&gt;
&lt;a class="jive-link-external" href="http://kb.vmware.com/kb/1006427"&gt;http://kb.vmware.com/kb/1006427&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
３．タイマー割り込みの回数を少なくする (kernel2.6系のみ)&lt;br /&gt;
これが一番厄介だが効果は劇的だったりする。kernel2.6系では、カーネルコンパイル時のオプションに1秒間の割り込み回数が100,250,1000の3種類が選べる。Novel SLES10SP2では250になっているが、RHEL4やRHEL5は1000になっている。特にVirtual SMP構成の場合は、CPUの分だけLOCの割り込みが倍増するため影響が大きい。&lt;br /&gt;
REHL4.7、5.1以降(CentOSもOK)であれば、２のKBにも記載されているようにgrubのdivider=10だけでよい。&lt;br /&gt;
だが、それ以外についてはkernelのヘッダファイルを修正して再コンパイルする必要がある。&lt;br /&gt;
具体的には、/usr/src/linux-2.6/include/asm-i386/param.hのHZの定義を下記のように修正する。（詳細は&lt;a class="jive-link-external" href="http://kb.vmware.com/kb/1420"&gt;http://kb.vmware.com/kb/1420&lt;/a&gt;）&lt;br /&gt;
&lt;div class="jive-quote"&gt;
#define HZ 100&lt;br /&gt;
&lt;/div&gt;
もしくは、CONFIG_HZ_1000=yをCONFIG_HZ_100=yに変更して再コンパイルする。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;タイマー割り込みの回数を確認する&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
さて、３の設定が効いているかどうかを確認する方法。dividerの設定は起動後に/proc/cmdlineでも確認できるが、割り込みの回数自体も/proc/interruptsで表示される累積の割り込み回数を何度か表示して、差分と経過時間から計算することができる。(SLES10SP2のように、ディストリビューションによっては最初から/proc/sys/kernel/HZに示されているケースもある。)&lt;br /&gt;
&lt;br /&gt;
例えば、下記はdivider=10を指定したRHEL5.1で、10秒毎に/proc/interruptsの結果を表示した例。割り込みレベル0もしくはLOCの差を10で割ると、約100回の割り込みが発生したことがわかる。つまり、割り込み回数がデフォルトの1000から100になっていることがわかる。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="jive-quote"&gt;
--root@localhost ~--# /sbin/hwclock&lt;br /&gt;
Sat 03 Jan 2009 05:57:12 PM JST  -0.686850 seconds&lt;br /&gt;
--root@localhost ~--# date&lt;br /&gt;
Sat Jan  3 17:57:12 JST 2009&lt;br /&gt;
--root@localhost ~--# cat /proc/interrupts&lt;br /&gt;
CPU0&lt;br /&gt;
0:     262551    IO-APIC-edge  timer&lt;br /&gt;
1:        475    IO-APIC-edge  i8042&lt;br /&gt;
6:          5    IO-APIC-edge  floppy&lt;br /&gt;
7:          0    IO-APIC-edge  parport0&lt;br /&gt;
8:          6    IO-APIC-edge  rtc&lt;br /&gt;
9:          0   IO-APIC-level  acpi&lt;br /&gt;
12:       7455    IO-APIC-edge  i8042&lt;br /&gt;
14:      24515    IO-APIC-edge  ide0&lt;br /&gt;
169:       9294   IO-APIC-level  ioc0&lt;br /&gt;
177:       1891   IO-APIC-level  vmxnet ether&lt;br /&gt;
NMI:          0&lt;br /&gt;
LOC:     262605&lt;br /&gt;
ERR:          0&lt;br /&gt;
MIS:          0&lt;br /&gt;
--root@localhost ~--# sleep 10&lt;br /&gt;
--root@localhost ~--# cat /proc/interrupts&lt;br /&gt;
CPU0&lt;br /&gt;
0:     263557    IO-APIC-edge  timer&lt;br /&gt;
1:        475    IO-APIC-edge  i8042&lt;br /&gt;
6:          5    IO-APIC-edge  floppy&lt;br /&gt;
7:          0    IO-APIC-edge  parport0&lt;br /&gt;
8:          6    IO-APIC-edge  rtc&lt;br /&gt;
9:          0   IO-APIC-level  acpi&lt;br /&gt;
12:       7455    IO-APIC-edge  i8042&lt;br /&gt;
14:      24610    IO-APIC-edge  ide0&lt;br /&gt;
169:       9306   IO-APIC-level  ioc0&lt;br /&gt;
177:       1957   IO-APIC-level  vmxnet ether&lt;br /&gt;
NMI:          0&lt;br /&gt;
LOC:     263609&lt;br /&gt;
ERR:          0&lt;br /&gt;
MIS:          0&lt;br /&gt;
--root@localhost ~--# date&lt;br /&gt;
Sat Jan  3 17:57:22 JST 2009&lt;br /&gt;
--root@localhost ~--# /sbin/hwclock&lt;br /&gt;
Sat 03 Jan 2009 05:57:23 PM JST  -0.913159 seconds&lt;br /&gt;
&lt;/div&gt;
&lt;p /&gt;
なお、Windowsではperfmonでinterrupts/secという項目があるので、こちらで同様の計算ができるが、タイマー割り込みの回数だけを抜き出す方法は不明。</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">timesync</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">clock</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">linux</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">windows</category>
      <pubDate>Sat, 17 Jan 2009 15:15:39 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2009/01/17/linux-os-</guid>
      <dc:date>2009-01-17T15:15:39Z</dc:date>
      <clearspace:dateToText>10 months, 3 weeks ago</clearspace:dateToText>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/linux-os-</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=2411</wfw:commentRss>
    </item>
    <item>
      <title>Interpreting esxtop Statistics</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2009/01/08/interpreting-esxtop-statistics</link>
      <description>マニュアルだけではわからないesxtopの項目の解説。&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://communities.vmware.com/docs/DOC-9279" class="jive-link-wiki"&gt;Interpreting esxtop Statistics&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ESX4.0での情報も一部記載されている。interrupts(割り込み)の統計画面も追加されるようだ。</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esxtop</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">performance</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">statistics</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <pubDate>Thu, 08 Jan 2009 17:33:10 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2009/01/08/interpreting-esxtop-statistics</guid>
      <dc:date>2009-01-08T17:33:10Z</dc:date>
      <clearspace:dateToText>10 months, 3 weeks ago</clearspace:dateToText>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/interpreting-esxtop-statistics</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=2417</wfw:commentRss>
    </item>
    <item>
      <title>VCのIPアドレス変更後、ESXが「応答なし」になる</title>
      <link>http://communities.vmware.com/blogs/kkomatsu/2008/12/26/vc-ip-esx-</link>
      <description>VCのIPアドレスを変更すると、管理下のESXは全て「応答なし(not responding)」になる。&lt;br /&gt;
&lt;br /&gt;
VCとESXの接続状態の確認は、VCからのポーリングではなく、ESXから定期的(60秒毎？)に生きていることを通知するしくみになっている(VCはこの通信をudp/902で待ち受けている)。VCのIPアドレスが変更されてもESXには変更が通知されないため、ESXはこの設定ファイルに記録された古いIPアドレスに通知を送り続ける。VCはこの通知を受け取れず「応答なし」とみなしてしまうことになる。&lt;br /&gt;
&lt;br /&gt;
このような状況になった場合、もっとも容易に復旧する方法は、&lt;br /&gt;
１．VI Clientのインベントリ画面でデータセンタを選択し、「ホスト」タブを開く&lt;br /&gt;
２．ShiftやControlボタンを使ってESXを複数選択する&lt;br /&gt;
３．右クリックし、まとめて「切断」する&lt;br /&gt;
４．ESXの切断が終わったら、同様に右クリックし、まとめて「接続」する&lt;br /&gt;
&lt;br /&gt;
再度接続しなおすことで、ESXは新しいVCのIPアドレスを認識することになる。&lt;br /&gt;
切断中はVMware DRSといった機能は動作しないが、仮想マシンの動作そのものには一切影響しない。&lt;br /&gt;
&lt;br /&gt;
VI Clientで複数選択ができないバージョンの場合、下記のスクリプトを使用することでESXを1台ごと切断・接続する手間を省くことができる。&lt;br /&gt;
&lt;br /&gt;
VI Perl Toolkit Script to Reconnect Non-Responding Hosts&lt;br /&gt;
&lt;a class="jive-link-external" href="http://kb.vmware.com/kb/1003343"&gt;http://kb.vmware.com/kb/1003343&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
なお、ESXは自身を管理しているVCのIPアドレスを下記のファイルに記録している。&lt;br /&gt;
/etc/opt/vmware/vpxa/vpxa.cfg (VC2.5系)&lt;br /&gt;
/etc/vmware/vpxa.cfg (VC2.0系)</description>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">vpxa</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">vc</category>
      <category domain="http://communities.vmware.com/blogs/kkomatsu/tags">esx</category>
      <pubDate>Fri, 26 Dec 2008 17:25:36 GMT</pubDate>
      <author>kkomatsu</author>
      <guid>http://communities.vmware.com/blogs/kkomatsu/2008/12/26/vc-ip-esx-</guid>
      <dc:date>2008-12-26T17:25:36Z</dc:date>
      <clearspace:dateToText>11 months, 2 days ago</clearspace:dateToText>
      <clearspace:replyCount>1</clearspace:replyCount>
      <wfw:comment>http://communities.vmware.com/blogs/kkomatsu/comment/vc-ip-esx-</wfw:comment>
      <wfw:commentRss>http://communities.vmware.com/blogs/kkomatsu/feeds/comments?blogPostID=2390</wfw:commentRss>
    </item>
  </channel>
</rss>

