Meltdown・Spectreパッチを6台の実機で検証 ― 性能への影響はあるのか?
先日、アンチウイルスソフトをインストールしていない環境でもWindows向け2018年1月のMeltdown(メルトダウン)パッチを導入する方法を紹介しました。Microsoftは互換性のない一部のアンチウイルス製品を一時的にブラックリスト化し、その結果として「アンチウイルスを一切入れていないユーザー」まで更新対象から外れてしまったのです。この点についてMicrosoftは何も説明してくれませんでした。「羊の群れ」とは違う発想をすることなど、想定外なのでしょう。
さて、パッチのインストールが完了したので、次に確認すべきは性能と安定性です。私は合計6台のシステムでテストを行いました。Microsoftの発表を鵜呑みにして転載するだけで、実際には何も検証しなかった「テックメディア」よりはるかに多い台数です。MeltdownとSpectreのパッチは本当に安全なのか? 何より重要なのは、PCが遅くならないのか?という点です。
はじめに整理しておきたいこと
本題に入る前に、筆者の立場を明確にしておきます。
第一に、筆者はMicrosoftの株式を少額ながら保有しています。したがって「会社の公式見解に沿うべき」立場に見えるかもしれません。つまり「Windows 7が最も大きな打撃を受け、Windows 10は影響が小さい」という主張を支持する立場です。しかし現実は違います。Microsoft自身が出すベンチマーク結果には意味がありません。それはファストフード店に「あなたの食べ物は健康に良いですか?」と尋ねるようなものです。必要なのは中立な第三者による結果です。Microsoftが有望な企業であると考える理由は、「Windows 10が旧OSより速いから」では断じてありません(実際にはそうではないことを、これまでも繰り返し述べてきました)。
第二に、この分野での経験について述べさせてください。筆者はキャリアの大部分を、CPUアーキテクチャの最下層レベルに至るまでの性能チューニング、最適化、ベンチマーク作業に費やしてきました。スケジューリング、電源管理、データセンターオーケストレーション、アウトオブバンドプロトコルなど、ハードウェアプラットフォーム関連の特許を十件近く保有しています。IEEEの論文も公開していますので、興味があれば検索してみてください。
大規模で過酷なHPC環境でも同じ種類の仕事をしてきました。サーバー1万台未満のデータセンター構築? 退屈な話です。メモリアクセス周りの問題? 昔からあるお決まりの課題です。MeltdownやSpectreのような問題は、私にとって日常茶飯事であり、こうした経験の総まとめとして問題解決に関する書籍も執筆しています。
余談ですが、この種のデバッグとトラブルシューティングの方法を詳しく解説した以下の記事も参考になります。システムコールやタイミング、割り込み、コンテキストスイッチ、CPUカウンターなど、マニアックで有用な話題が満載です。
- Linuxシステムデバッグ完全チュートリアル
- 動作が重いシステム? perfで解決!
ベンチマークは役に立たない
はっきり言います。合成ベンチマークは家庭環境において無意味です。企業向けには有効でしょうが、自宅のPC環境とは何の関係もありません。この点についてはブラウザの比較記事でも触れてきましたし、FirefoxやChromeの記事でも再び言及しました。
ベンチマークが役に立たないのは、実態を反映しないからです。生の数値だけ見れば、BMW 330dのような車は0-100km/hを5.3秒で走り、最高250km/hを出せます。しかし、蒸気機関時代のままの道路網が残る英国へドライブに行けば、100km/hすら出せるか怪しいものです。重要なのは現実の人間の使い方なのです。
実際、UIの性能や応答性というテーマは極めて複雑で、主観的であり、測定が困難です。同じことをしている二人の人間を想像してください。しかし彼らは世界の異なる場所に住み、ソフトウェアの使い方も異なります。起動中のプログラム、ユーザーの年齢、速度に対する感覚、スキルなども加わります。気晴らし、ブラウザ拡張機能、Flashプラグインのバージョン、常駐バックグラウンドサービス、GPUドライバー、ハードディスクのキャッシュとフラグメンテーション、メモリーバスの速度、インターネット回線……組み合わせは無限です。まったく同じ使い方をする二人のユーザーは存在しません。
これはLinuxCon 2014での講演「P-Factor」でも語ったテーマです。IOメトリクスに基づき、ユーザーが「遅い」と感じる状態を数式で評価しようという試みでした。興味深い発見の一例を挙げると、8コアのシングルシステム上で純粋なCPU負荷を理論値500コア分(オーバーサブスクリプション)までかけた場合でも、I/O負荷がなければUIのラグは一切発生しませんでした。
あるベンチマーク(WhateverMarkと呼びましょう)が556ミリ秒で完了したとして、それが何を意味するのでしょうか? カフェで無線LANにつながり、脂ぎった指でスマホを操作している誰かがFacebookのページを開くのに何秒かかるか、それに換算できますか? 飼い猫の写真4枚をおばあちゃんに送るのにどれくらい時間がかかるか、予測できますか? できないでしょう。
パッチの重要性について
この話題全般には騒音とパニックが渦巻いており、実際以上に恐ろしく聞こえます。しかしエンドユーザーの視点から見れば、事態はそれほど悲惨ではありません。業界にとっては非常に深刻ですが、個人への影響はずっと小さいのです。
公開された脆弱性はすべてローカル攻撃ベクトルを持っています。これはマルチユーザーシステム、共有プラットフォーム、クラウドやホスティング事業者にとって重要なポイントです。一方、多くの場合シングルユーザーである一般家庭には、その重要性はぐっと下がります。
ローカル攻撃ベクトルであるということは、インターネットに接続するプログラム(ブラウザなど)がパッチ済みであれば、基本的には安全だということです。実際、主要なブラウザのほぼすべてが、これらの脆弱性への耐性を強化する最初のアップデートを受けています。これだけで使用例の90%はカバーされます。
逆に言えば、見知らぬ実行ファイルを無制限にPC上で動かしているなら、MeltdownやSpectreどころではなく、もっと根本的な問題を抱えています。それはどんなパッチでも解決できません。
MeltdownとSpectreの脆弱性は長い間存在していました。各種CPUアーキテクチャに関する資料を読む限り、軽く20年以上と言えます。つまり、発見されるまで20年かかるほど複雑で難解な問題だったか、あるいは長期間こっそり悪用され続けていたのに誰も気づかなかったか、どちらかです。どちらにせよ、この観点から見れば状況は何も変わっていません。
ちなみに、脆弱性の経年だけを問題視するのは筋違いです(前回の大型脆弱性は17年前のものでした)。コンピューターを使う歴史が積み重なるほど、古い脆弱性が発見される可能性は高まります。50年後には63年前の脆弱性が見つかるかもしれません。今のところデスクトップやノートPCの利用履歴がまだ浅いため、期間は短くなっているだけです。
実際のテスト内容
具体的に何をインストールし、何を実行したのか?
- Windowsの場合:Windowsのパッチのみを適用。ファームウェア更新は行いません。
- Linuxの場合:リポジトリから配布されるもの(カーネルとファームウェア)をすべて適用。
なぜWindowsでファームウェアを更新しなかったのか? そもそも入手できないケースもありますが、一般的にシングルユーザーシステムでは不要だと考えているからです。理由は前述の通りです。
それでは、結果を見ていきましょう。
ケース1:2010年製ノートPC
古いHP製マシンです。初代Core i5プロセッサー、Windows 7 SP1、NVIDIAグラフィックス搭載。標準ユーザー権限で運用し、セキュリティにはEMETとSuRunを使用。アンチウイルスは一切なし。実はこれが全ケース共通の重要な要素です。CPUサイクルを消費するリアルタイム型マルウェア対策ソフトが動いていないのです。
アップデート後もすべて正常に動作しました。体感できるほどの遅延はありません。筆者はごく微小な変化にも極めて敏感です。かつて車のリアサスペンションに0.6度のキャンバー変化を発見し、アライメント調整に出したこともあります。ブラウザーでのフルHD動画再生をテストし、複数の作業を並行して行いましたが、滑らかそのものでした。アップデート前と比べて有意な違いは一切確認できません。

ケース2:2011年製デスクトップ
2011年組りのゲーミングマシンです。今なお非常に高性能です。Windows 7 SP1、管理者ユーザー、EMETによる保護、RAM 16GB、i5プロセッサー、WD Caviar BlackのHDD5基、NVIDIA GTX 960(数年前にアップグレード済み)。動作は絹のように滑らかです。複数のPCゲームも試しましたが、高負荷時のCPUやGPU使用率に増加は見られません。コンテキストスイッチの増加もなし。ラグは皆無で、アプリの起動速度は従来と変わりません。HD動画のストリーミング、GIMPでの画像編集、TrueCryptコンテナの使用なども試しました。素晴らしい結果です。
ケース3:2014年製ノートPC
Lenovo IdeaPad Y50-70です。筆者所有のモバイル機器中最強の一台で、こちらもRAM 16GB搭載。Intel HD Graphics+NVIDIA GTX 860Mの構成で、GTX 860Mはデスクトップ版GTX 580相当、つまりGTX 960より約10〜20%劣ります。ただしCPUはより新しいi7で、HT有効により8スレッド動作(ゲーミングデスクトップの4スレッドに対し)。OSはWindows 8.1、管理者ユーザー、EMETで保護しています。
驚いたことに、アップデート後の方が以前よりも速く感じられます。もっとも、最新のNVIDIAドライバーも導入しているので、それが良い影響を与えている可能性もあります。ArmA 3やCities Skylinesをプレイしても、すべて快調でした。たとえばCities Skylinesでは、10万人口マップに大量のModを投入した状態でGPU使用率約30%、CPU使用率約45%と、アップデート前と同一の数値でした。


ケース4:2015年製ノートPC
多目的テスト機として使っているLenovo IdeaPad G50-70です。RAM 8GB、i3プロセッサー、Intel HD Graphics搭載。Windows 10、標準ユーザー権限、Exploit Protectionで保護。アップデート後もすべて美しく動作しました。
1080p動画をVLCとChromeで同時に2本ストリーミング再生してみましたが、それでもラグも問題も一切ありません。アプリ切り替えも高速です。エラーも不具合もゼロ。もし性能低下があるとしても、人間として、そしてオタクとしての筆者の感度閾値を下回っています。

その他のケース
さらに続きます。2012年製デスクトップ――ゲーミングマシンに似た構成で、CPUとGPUがやや非力ですが、これも問題なし。さらに2013年製のAsus VivoBookがあり、こちらはWindows 8.1とUbuntu Trustyのデュアルブート環境です。Windows側はいつもの構成(管理者+EMET)で、やはり速度低下なし。


ベンダーからのファームウェア更新はないものの、問題なく動作。
おまけ:各種Linuxディストリビューション
さらに、上記のLenovo G50、HP、Asus VivoBook上で、半ダース近くの異なるLinuxシステムもテストしました。中でもVivoBookが最も興味深い対象です。実運用システムだからです。実はこのUltrabookのUbuntu 14.04にはIntelマイクロコードがインストールされておらず、カーネルをMeltdownパッチ入りでアップグレードした後に改めてインストールしました。


2014年製IdeaPadと同様に、アップデート後の方が速く感じられます。キビキビと反応し、Trustyらしく爽快で信頼性のある挙動です。パッチ適用前後とも、いつものワークロードを実行しました:


システム数値の揺れは無関係です。実際の負荷はCPU使用率40〜90%の間で変動し、他の指標も連動します。変化があったとしても、体感できるレベルではありません。
体感できるほどの遅延は一切ありません。これにより、まったく異なるOSとカーネルのセットでWindowsでの知見を裏付けることができ、実験の信頼性がさらに高まりました。
追加テスト:FirefoxとChromeの緩和策
Firefox 57.0.4と、新しいサイト分離フラグを有効化したChrome 63もテストしました。ここでも差異があるとしても、人間の知覚能力をはるかに超えたレベルに隠れています。Chrome 63ではサイトプロセス分離を有効化してみました:
chrome://flags/#enable-site-per-process

この騒動で良かったこと
率直に言って、ハードウェアおよびソフトウェアベンダーの対応には満足しています。完璧でした。クラッシュなし。バグなし。性能影響なし。とても良い仕事です。
この騒動で気に入らないこと
問題は「テックメディア」全体に漂う受動攻撃的な文体です。すべてが弁護士じみた表現で、誰も責任を負いません。問題の核心を避け、中身のない受け売りを垂れ流す。腹立たしいだけでなく、時間と紙面の無駄です。記事の目的がIntelやMicrosoftの公式声明のコピペだけなら、最初から書かない方がましです。
Microsoftについて言えば、「一部のユーザーはシステム性能の低下に気づくかもしれない」のような声明は無意味です。一体何を意味するのでしょう? 人間はいずれ死ぬことになっていますが、それが今すぐ問題だというわけではありません。知覚は主観的なものです。PCの電源を切られても気づかない人さえいます。
フォントレンダリングへの言及も同じです。冒頭で紹介した記事ではまさにフォントの問題をデバッグしていますし、Meltdownパッチ導入ガイド(Windows Updateがレジストリを読むのは起動時だけという事実含め)でも触れたように、これは根拠の薄い議論です。ほぼすべてのアプリケーションはフォントを読み込み時にキャッシュします。メモリ操作は高速で、GPUは本当に速いのです。
待てよ、レンダリング? なるほど、これは面白い。数学的演算のことか、CPU処理か、GPU処理か、何の話でしょう? ラスタライズ、アンチエイリアシング、ヒンティング、画面解像度、表示リフレッシュ……正確には何の話でしょうか? このトピックについては具体数値付きの優れた解説記事がありますので、参照してください。
Microsoftをはじめ各社が自社の調査結果に但し書きを付け、悲観的な側に倒れる必要性は理解しています。しかしそういう姿勢なら、そもそも何も書かないべきです。「Windows 10はWindows 7より性能が良い」という示唆に価値はなく、信頼性を損なうだけです。理由を説明しましょう。
2010年製のPCを思い浮かべてください。当時Windows 7はMicrosoftの最新OSでした。ハードウェアに最適なドライバーを揃えれば、そのOSは能力のピークで動作します。
そこにWindows 10を入れても、魔法のような改善は得られません。確かに_NT_win10というカーネル関数が特定条件下で_NT_win7より速いことはあり得ます。しかし巨大な性能向上を主張するなら、それは次のいずれかを意味します。1) Windows 7比でWindows 10のカーネルが劇的に変更された――Microsoftの狂的な後方互換性へのこだわりと、ソフトウェア進歩の漸進的な性質から考えて不合理です。2) Windows 7は最適でないシステムであり、2010年当時のMicrosoftのカーネル技術者が既存ハードウェアを最大限活用できなかった――そんな馬鹿な話がありますか。
新しいハードウェアなら話は別です。賛成します。Windows 7のカーネルアップデート提供終了以降に設計された新世代CPUを搭載した新プラットフォームにWindows 7を入れた場合、旧OSがThunderbolt、USB 3.0、SSD、CPU拡張命令といった新機能を使いこなせない可能性があります。この場合は最新のWindowsを選ぶのが絶対的に理にかなっています。XPから7へ移行した際にも同じ主張をしました。OSはハードウェアに合わせて選ぶべきで、稼働中の入れ替えに意味はありません。OSを一つ隣のバージョンに上げても奇跡は起こりません。
この主張は商用Linuxディストリビューションを扱うエンタープライズの世界でも検証済みです。既存プラットフォーム上で、新しいバージョンやカーネルが顕著な改善をもたらすことは滅多にありませんでした。目立った性能向上が見られたのは常に真っさらな新ハードウェア上でした。差を生んだのはカーネル単体ではなく、カーネル、glibc、コンパイラー、ソフトウェアバージョン、ハードウェアドライバーの組み合わせだったのです。
以上を踏まえると、仮に隠れた意図がなかったとしても、人は意図を見出してしまうものです。それでMicrosoftに何を期待するのでしょうか? 公式ブログで「Windows 10なんて使わないでください、お金は要りません」と書いてほしいのですか?
だからこそ、製品の所有者からの消費者向け助言は無視すべきです。主観的なものだからです。仮に100%真実だとしても、依然として主観です。そしてここで、「テックメディア」の失敗と真正面から向き合うことになります。
何百ものサイトが急いでこの話題を取り上げました――文字通り、MicrosoftとIntelの声明の逐語的なコピペです。Ctrl+C、Ctrl+Vが使える程度の人間なら誰でもできることです。そして焦点はドラマと嘆きに置かれたまま。事実確認をし、主張を検証し、データを提示する者はいません(勇敢な少数派が実際の数字を示し始めてはいますが、依然として憶測が支配的です。脆弱性の本質についての報道も同様です)。
人は自分が理解していることについてのみ語るべきだと考えます。誰かが「テッチャン」を名乗るなら、書いている内容について深い知識を持っているはずです。流行用語と難解な専門用語(ブランチとかメモリ管理とか)が飛び交う空虚なプリセールストークが読みたいなら、自己啓発セミナーに行って、自分の豊かな生活に新しい意味を見出してもらうのがよろしい。
正直、朝出勤しては駆け足の記事をいくつか仕上げ、それで一日終わりとする人々が哀れでなりません。情熱はどこにあるのか? 人を助けたいという欲求は? 「Meltdownでマシンが遅くなる」と告げておきながら、代替案も次の一手の提案もないのは、単なる終末論的な説教です。ましてや現実はそれほど悪くないのですから。
技術的な観点から何が分かったのか
考えられるほぼすべてのシナリオをテストしました。なお、手持ちがIntelプロセッサーばかりなので、AMDシステムは対象外です。いずれにせよ、Windows 7/8/10はいずれもパッチ適用前と同等かそれ以上の速度で動作し、パッチによる識別可能な影響は一切ありませんでした。プラットフォームは問いません。2010年から2015年まで、Asus、Lenovo、HP、すべて良好です。折よく、i3/i5/i7の5世代にわたるプロセッサー、NVIDIAおよびIntel HDグラフィックス、そしてハイブリッド構成、標準ユーザーと管理者ユーザー、その他さまざまな組み合わせをテストする機会にも恵まれました。
ゲーム(かなり本格的なタイトル含む)、ローカルおよびオンラインのメディアストリーミング、ブラウジング、画像編集、ワープロ、暗号化ソフトなどを試しました。エラー、クラッシュ、ラグ、遅延は一件もありません。今後のアップデートもこの品質であってほしいと願うばかりです。
一点思うのは、筆者がアンチウイルスソフトを一切使っていないことです。使う意味がないと考えています。代わりに標準ユーザー権限、EMET、Exploit Protectionといった手段を好んで使います。Microsoftが持つこれらの優れたセキュリティフレームワークは、ブラックリスト方式の古典的ツールのどれよりも優れています。MeltdownパッチのインストールにQualityCompatレジストリハックが必要だったことを考えると、アンチウイルス製品を使っている環境では性能低下が起こり得ると推測されます。そこに注力しているからです。しかし筆者はそれをテストできませんし、できたとしてもやりたくありません。「魚の釣り方を教える」精神の話です。筆者は問題解決の哲学と批判的思考について人々を支援し教育したいのです。
最後に、周囲と同じことをしないこと
これは人生のあらゆる場面に当てはまります。みんなと同じことをすれば、みんなと同じようになる。そして大多数の人は平凡で、生涯をローンと住宅ローンの返済に捧げることになります。あなたはそれを望まないでしょう。
みんなが買えと言えば売れ。世間がセキュリティだ恐慌だと騒ぐときこそ、落ち着くのです。今回のケースでは、IT業界の混乱期はソフトやハードの買い替えタイミングとしては不適切です。新しいPCの購入、ベンダーの乗り換え、OSのアップグレードなどに急かされてはいけません。計画的に新型ノートやデスクトップをご褒美として買う予定があるなら、もちろんどうぞ。しかしパニックに財布で反応するのは、まさにやってはいけないことです。
あなたができる――そしてすべき――最善策は、外の誰も信用しないことです。筆者自身でさえ例外ではありません。まずこの記事を読み、その上で自分のスキルとニーズに合った独自のテストを実施してください。自分の環境で機能することを確認するのです。筆者としては、あなたのシステム性能に事実上の劣化は見られないと高い確信を持っています。もちろん、筆者と同じ構成、つまりリアルタイム型アンチウイルスを使っていない場合の話です。もし使っているなら、この記事はあなたにとって最良の助言ではないかもしれません。
結論
数値を求めるなら、お答えしません。意味がないからです。UIの遅さは主観的なものです。ベンチマークが重要になるのは業界向けです。10Gbps光ファイバーで接続された55ノード上に400TBのデータベースクラスタを運用しているなら、確かに1クロックたりとも無駄にできないでしょう。家庭環境? 忘れてください。
とはいえ、多様なハードウェアプラットフォーム、複数のOS、さまざまなシナリオ、条件、アプリケーションを網羅した、主観的かつ個人的でありながら徹底的なテストの結果、認識可能な性能低下は一切見られませんでした。新システムでも旧システムでも同様です。すべてが正常に、安定して動作しています。ベンダーの皆さん、素晴らしい仕事です。メディアの皆さんは……クリック数にはお気をつけて。扇情主義は売れますからね。
それではまた。
-
Firefox 54徹底レビュー:マルチプロセス化による速度向上と、失われたカスタマイズ性、そして未来
Mozillaが数年前にChrome風の路線への転換を始めて以来、筆者の熱意は6週間ごとのリリースサイクルとともに徐々に冷めていった。Firefoxの新バージョンが出るたびに、忠実なユーザーが愛してやまなかった要素は削られ、Firefoxであるべきではないものが積み上がっていったからだ。しかし、本当の試練はこれからだった。それがWebExtensionsへの移行である。 Mozillaは残された資産を守りつつも、強力な拡張機能メカニズムを廃止し、熱心なファン層を切り捨てながら、ブラウザに新風を吹き込もうとしている。その目玉が「より高速な動作」だ。まるで速度こそがユーザー離れの決定的な要因であっ
-
Windowsのディスク容量を解放する方法:標準搭載ツールの実力を徹底検証
Windowsマシンのディスク容量が不足することは、適切な計画を立てていれば本来防げるはずの問題です。例えば、OS(Cドライブ)を専用パーティションに配置し、新しいソフトウェアを頻繁にインストールせず、データやゲームは別のパーティションやドライブに保存しておけば、Windows Updateによる一時的な増加を除けば、Cドライブの使用量はほぼ一定に保たれます。 しかし、こうした対策を何もしていない場合、ディスク容量の制約に悩まされることになるでしょう。その際にはクリーンアップ作業が必要です。Windowsには標準で複数のツールが用意されており、有名なものもあれば、あまり知られていないものもあり