• [^] # Re: Bash

    Posté par . En réponse au journal Temps de démarrage: Mac OS X contre Linux. Évalué à 7.

    Et est-ce que le problème ne viendrait pas aussi du nombre de fichiers à ouvrir ?
    Les fichiers de démarrage n'étant pas a priori dans des secteurs contigus du disque dur, j'imagine que chaque ouverture provoque un accès physique au disque. Imaginons 2000 fichiers à 10ms de temps d'accès, ça fait déjà 20 secondes ! Bon ensuite, 2000, c'est peut-être exagéré ;-). N'empêche que ça correspond à peu près à la différence entre un boot sur disque dur magnétique et un boot sur mémoire flash.

    Une solution à cela serait de forcer les fichiers à être écrits physiquement dans des secteurs contigus, mais ce n'est toujours pas optimal (ça dépend trop de l'implémentation du FS et des pilotes du disque !).

    Une autre solution serait de copier tous les fichiers dans un fichier de cache (contigu dans le FS, autant que possible), qui serait chargé inconditionnellement en RAM à chaque boot en premier lieu.
    Ce cache serait mis à jour plus tard pendant la session, dès qu'on a un peu de temps, par exemple en contrôlant les access time des fichiers potentiellement concernés, et tant qu'à faire en les rangeant dans l'ordre.
    Une mise en 1⁄2uvre pas trop difficile serait de monter ce cache en tant que /etc ou /truc (avec un système qui irait chercher dans le vrai FS en cas de défaut de cache).
    On pourrait encore optimiser en lançant le chargement du cache en parallèle de l'exécution du démarrage, en donnant la priorité aux accès demandés explicitement par l'init (dans les rares cas où le fichier n'a pas déjà été chargé : en effet, le cache est ordonné !).
    Résultat : utilisation optimale du disque dur pendant le démarrage.

    Est-ce que des solution similaires auraient déjà été mises en 1⁄2uvre dans d'autres OS ? Est-ce cela qui se passe sous MacOSX ? Est-ce que je réinvente la roue parce que les FS actuels réorganisent déjà les fichiers de telle sorte que ça passe bien ?

    Bon, évidemment tout ce que je dis là est peut-être un peu naïf, car je ne suis pas un gourou de la programmation système. Donc n'hésitez pas à critiquer.