是否有一种可靠、快速、确定性的方法(即not基准)来检查 Mac OS X 所在的系统驱动器是否是固态驱动器?
还有其他指标可以表明磁盘处理并行访问的能力如何吗?我正在尝试调整我的程序将用于磁盘绑定操作的线程数。
我对原始速度或寻道时间不感兴趣,只对哪种类型的访问(串行或并行)对驱动器更快感兴趣。我不希望我的程序的用户使用 iSCSI 或 RAID。 SSD是我的重点,其他都很好。
Device Characteristics
of 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);
}
Edit: 这是完整的源代码 https://github.com/kornelski/itunesfixer/blob/master/SSD.m。我已经验证它可以与 Intel SSD 和 OCZ Vertex 配合使用。