Существует ли надежный, быстрый, детерминированный способ (т. Е. , а не эталонный тест) для проверки, является ли системный диск Mac OS X твердотельным накопителем?
Есть ли другой показатель, насколько хорошо диск обрабатывает параллельный доступ? Я пытаюсь настроить количество потоков, которые моя программа собирается использовать для операций с диском.
Меня не интересует необработанная скорость или время поиска, только какой тип доступа - последовательный или параллельный - быстрее для накопителя. Я не ожидаю, что пользователи моей программы будут использовать iSCSI или RAID. SSD - мой фокус, все остальное приятно иметь.
Device Characteristics
из 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);
}
Редактировать: Вот полный исходный код . Я убедился, что он работает с твердотельными накопителями Intel и OCZ Vertex.