Mac OS X が搭載されているシステム ドライブがソリッド ステート ドライブであるかどうかを確認するための、信頼性が高く、迅速で、確定的な方法 (つまり、ベンチマークではない方法) はありますか?
ディスクが並列アクセスをどれだけうまく処理できるかを示す他の指標はありますか? プログラムがディスクにバインドされた操作に使用するスレッドの数を調整しようとしています。
私は生の速度やシーク時間には興味がなく、シリアルまたはパラレルのどちらのタイプのアクセスがドライブにとって高速であるかだけに関心があります。私のプログラムのユーザーが iSCSI や RAID を使用することは期待していません。SSD は私の焦点であり、それ以外は何でもあると便利です。
Device Characteristics
ofIOAHCIBlockStorageDevice
には、この情報が含まれています。プログラムで読み取るにはどうすればよいですか?
これまでのところ、次のようになることがわかりました:(以下は擬似コードです)
match = IOBSDNameMatching(kIOMasterPortDefault,0,"disk0s2");
IOServiceGetMatchingServices(kIOMasterPortDefault, match, &iterator);
while(entry = IOIteratorNext(iterator)) {
do {
entry = IORegistryEntryGetParentEntry(nextMedia, kIOServicePlane, &entry);
dict = IORegistryEntryCreateCFProperty(nextMedia,
CFSTR(kIOPropertyDeviceCharacteristicsKey), kCFAllocatorDefault, 0);
[dict objectForKey:CFSTR(kIOPropertyMediumTypeKey)];
}
while(!dict && entry);
}
編集:ここに完全なソース コードがあります。Intel SSD と OCZ Vertex で動作することを確認しました。