有没有一种可靠、快速、确定的方法(即不是基准测试),可以检查Mac OS X系统驱动器是否为固态硬盘?还有其他指标可以衡量磁盘处理并行访问的能力吗?我试图调整我的程序用于磁盘密集型操作的线程数。我只关心哪种类型的访问(串行或并行)对驱动器来说更快,而不是原始速度或寻道时间。我不希望我的程序用户使用iSCSI或RAID。SSD是我的重点,其他任何东西都是好的。
到目前为止,我已经弄清楚了它是这样工作的:(以下是伪代码)
IOAHCIBlockStorageDevice
的设备特性
包含了这些信息。如何以编程方式读取它呢?
到目前为止,我已经弄清楚了它是这样工作的:(以下是伪代码)
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);
}
编辑:这里有完整的源代码。我已经验证它可以与英特尔 SSD 和 OCZ Vertex 一起使用。