Dans les E/S de fichier C, l'indicateur O_DIRECT
peut être utilisé pour réduire les effets de cache pour un fichier open()
. Je comprends que ce n'est pas une fonctionnalité POSIX, a été présent dans le noyau Linux depuis la version 2.4.10, et que Linus est opposé à l'interface en général. Sous NetBSD, il semble fonctionner comme annoncé. Exemple d'appel:Portabilité de l'ouverture (... O_DIRECT) dans C?
int fd = open(filename, O_DIRECT);
Je cherche à écrire des utilitaires d'analyse comparative de disque à faible niveau, et l'utilisation O_DIRECT
semble être un potentiellement bon moyen de mesurer le disque et les performances du disque sans les effets du système de fichiers OS/cache de bloc . Idéalement, je voudrais être capable d'exécuter le benchmark sur les systèmes Linux, Windows (Cygwin is OK), Mac OS X et BSD. Est-O_DIRECT
le meilleur moyen de contourner les caches de disque du système d'exploitation, en termes de portabilité et de fiabilité pour l'analyse comparative? Existe-il des alternatives?
Vous devez inclure un indicateur autre que simplement O_DIRECT dans l'appel à open(); ce que vous avez fait, implicitement, c'est utiliser O_RDONLY, alias 0. –
Pour les prochaines recherches Google, cette question est traitée par cette autre question de StackOverflow: http://stackoverflow.com/questions/2299402/how-does-one-do -raw-io-sur-mac-os-x-ie-équivalent-à-linuxs-o-direct-flag –