リソースの無駄遣いに気づいていますか?

「大抵の仮想環境はリソースを無駄遣いしています」――そう言われたら、読者の皆さんはどう思いますか?

「それは何かの間違いだ」と思われるかもしれません。そもそも仮想化は、物理サーバを統合することでリソースの利用効率を高める技術です。実際、1台の物理サーバ上で複数の仮想マシンが稼働しており、リソースは効率的に利用されているように感じます。

しかし、アセスメントを行うと、ほとんどの環境でリソースの無駄遣いが判明します。原因の多くは仮想マシン単位の浪費です。高いサーバ統合率を誇る環境でも、仮想マシン単位で見るとリソースを浪費しているケースが多いのです。

関連記事

論より証拠。あるユーザ環境にて行われた実際のアセスメントの結果をお見せしましょう。

黄色でハイライトしてある「Oversized Virtual Machines」は、「オーバーサイズの仮想マシン」、すなわち、実際に必要とするリソースよりも多めのリソースが割り当てられてしまっている仮想マシンの数です。CPUやメモリなどのリソースが無駄に多く割り当てられ、リソースの無駄遣いを引き起こしている仮想マシンということになります。

上記の例では、約90%もの仮想マシンがオーバーサイズだと判定されており(479個中454個)、ほとんどの仮想マシンがリソースを無駄遣いしているということになります。

驚く方もいらっしゃるかもしれませんが、アセスメントを行うと、上記のように高い割合で仮想マシンがオーバーサイズ判定になることがほとんどです。多くの仮想環境で似たような結果が得られます。(後程、ご自身で確かめる方法もご紹介します。「うちのシステムは違う!」とお感じの方は実際に調べてみてください)

管理者の中には、オーバーサイズの仮想マシンがありそうだという感覚をお持ちの方も少なくないでしょう。ただし、無駄遣いのレベルがここまで深刻だとは思っていないのではないでしょうか。

では、なぜこのような状況に陥ってしまうのか、少し考えてみましょう。

リソースの無駄遣いが起こるメカニズムとは

多くの仮想マシンがオーバーサイズになる理由は、仮想マシンのサイジングプロセスを考えていくと見えてきます。

仮想マシンを作るとき、大抵は利用者(アプリケーション開発者など)が何らかのサイジングの作業を行って仮想マシンのサイズを決め、運用者(IT部門の運用チームなど)に申請します。

このサイジングのプロセスで問題なのは、運用者と利用者の利害が一致しないところです。運用者は、リソースの効率化のために仮想マシンを適正なサイズにしたいのですが、利用者にはそのような動機はありません。どちらかというと、性能問題を回避するためになるべくマージンをとりたいと考えます。CPUやメモリを多めに搭載する傾向にあるわけです。

このような背景から、利用者の申請ベースでは仮想マシンのサイズは大きめになりがちです。使った分だけ払うという従量課金のシステムを導入すればこの利益相反をある程度解消できるのですが、社内システムでそこまで行っているところはまだ少ないでしょう。

この結果、多くの仮想マシンがオーバーサイズ状態で稼働することになります。そして厄介なのは、オーバーサイズ状態は改善されづらいという点です。

もし、アンダーサイズ(リソース不足)であれば、運用に支障が出るので、仮想マシンのサイズは修正されるのが普通です。しかし、オーバーサイズの場合は、ユーザーが困ることはないので、そのまま使われていくことがほとんどです。このため、オーバーサイズの仮想マシンの割合はシステムの運用年月とともに増えていき、数年もすればオーバーサイズの仮想マシンばかりが稼働する状況ができあがります。

サーバ統合により本来もっと高まるはずだったCPUやメモリの利用率も、仮想マシン単位の無駄遣いで結構な割合が相殺され、コスト削減効果が薄れてしまうわけです。

では、どうしたらこうした問題を解決できるのでしょうか?