[トップページ] [FAQ 一覧]

対象:EBS

【ファーストタッチペナルティとは】回避するディスクを総アクセスするコマンド





2022年4月19日追記:「Amazon EBS 高速スナップショット復元」を追記しました。

ファーストタッチペナルティとは


スナップショットやAMIからEBSを使用したインスタンスを生成する場合注意が必要です。なぜならディスクI/Oの性能が極端に落ちる場合があるからです。
スナップショットやAMIはS3上にあります。これをEBSにコピーした場合でもすぐにコピーされるのではなく、ブロックごとに初めてアクセスする場合にS3からEBSへコピーされるようです。
(同じブロックのアクセスはすでにコピーされるので高速となる)
この様に初回アクセス時に性能が低下することを"ファーストタッチペナルティ(First Touch Penarty)"と呼びます。ファーストタッチレイテンシーと呼ぶ場合もあるようです。

インスタンスサイズ、対象ファイル、EBSタイプ、その他環境にかかわりますが、初回アクセスと2回目以後のアクセスで性能が50%から大幅ダウンで5%になる場合もありました。

回避する方法


回避する方法は2通りあります。
・EBSコピー後にすべてのブロックにアクセスする
・「Amazon EBS 高速スナップショット復元」を利用する。

Amazon EBS 高速スナップショット復元は次のページを参考にしてください。デフォルトでは無効ですが有効化するとコストが発生するようです。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-fast-snapshot-restore.html



これを回避するにはEBSをスナップショットから作成した後ですべてのブロックをアクセスするとよいでしょう。これですべてのブロックがS3からEBSへコピーされます。
以下コマンドの例です。


dd if=\\.\PHYSICALDRIVEn of=/dev/null bs=1M --progress --size



--size オプションによりハードディスク全体に対する処理を実行します。
bs=1M オプションにより、1MごとにI/Oを行います。サイズを大きくすることが可能ですが、あまり大きいと物理メモリ不足となるようです。



PHYSICALDRIVEnとは





この中でPHYSICALDRIVEnという表示があります。これを確認するにはWindowsで以下のコマンドを実行します。


C:\wmic diskdrive get deviceid
DeviceID
\\.\PHYSICALDRIVE2
\\.\PHYSICALDRIVE0
\\.\PHYSICALDRIVE1



dd.exeをダウンロードする


Linux系は標準でddコマンドが用意されていますが、Windowsでは存在しません。
以下からダウンロードが可能です。

http://www.chrysocome.net/dd

参考:Amazon EBS ボリュームの初期化
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ebs-initialize.html


Invoke-Command でdd.exeを呼ぶとエラー


バージョンによりますが、Invoke-Command でdd.exeを呼ぶとエラーが表示されますが処理は実行されました。
2019年の時点としてメモとして残しておきます。

Invoke-Command remotehostname -scriptblock {c:\tool\dd}




bs パラメータ変更の実験結果




bs=1M パラメータのサイズを大きくすると処理性能がアップしました。インスタンス種類にもよるが、bs=16Mや32Mあたりが処理所要時間が一番短くなりました。
ただし一度ディスクを総なめした後で再度ddを実行した場合はbsサイズでの処理所要時間には変化がありませんでした。

以下のような Powershell コードでテストすることが可能。


$size=@("1M","2M","16M","32M","64M","128M")

$size | foreach{
date
dd if=\\.\PHYSICALDRIVE<対象ディスクの番号> of=/dev/null bs=$_ --progress --size
date
}





スナップショットから生成、削除を繰り返した場合


(1)スナップショットからEBS生成
(2)dd実行
(3)EBS削除

この(1)(2)(3)を繰り返した場合、(2)での所要時間には変化がなかった。(2019年現在)
さすがにそこまでは記憶していない模様。


【超重要】本ページは情報が古くなっている可能性があります。参考程度にしてください。








[ 一覧に戻る]


【注意事項】本ページの内容は個人的に調査した結果がであり内容が正しいことは保証されません。
またAWSサービスは常に改良、アップデートされており本ページの内容が古く誤った内容になる可能性もあります。変更になっても本ページが正しく更新されるとは限りません。
あくまでも参考程度でご覧ください。内容により発生したいかなる時間的損害、金銭的損害、その他の損害に関しても何人も保証しません。