Esiste un modo affidabile, rapido e deterministico (ad esempio non un punto di riferimento) per verificare se l'unità di sistema in cui è installato Mac OS X è un'unità a stato solido?Come rilevare SSD in Mac OS X?
C'è qualche altro indicatore di come il disco gestisce l'accesso parallelo? Sto provando ad aggiustare il numero di thread che il mio programma userà per le operazioni legate al disco.
Non sono interessato alla velocità raw o al tempo di ricerca, solo quale tipo di accesso, seriale o parallelo, è più veloce per l'unità. Non mi aspetto che gli utenti del mio programma usino iSCSI o RAID. SSD è il mio obiettivo, tutto il resto è bello da avere.
Device Characteristics
di IOAHCIBlockStorageDevice
contiene queste informazioni. Come posso leggerlo a livello di programmazione?
Finora ho capito va in questo modo: (segue è pseudocodice)
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: Here's complete source code. Ho verificato che funzioni con Intel SSD e OCZ Vertex.
Vedere anche http://stackoverflow.com/q/908188/545127 – Raedwald