是否有可靠、快速、确定的方法(即不是基准测试)来检查 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。