Comment Linux gère-t-il les E / S disque simultanées?

12

Lorsqu'un serveur Linux sert de nombreuses demandes simultanées pour lire de nombreux fichiers différents, est-ce que:

  1. Recherchez File_1, lisez l'intégralité du fichier, puis recherchez File_2, lisez l'intégralité du fichier, puis recherchez File_3, etc., etc.

  2. Recherchez File_1, lisez-en une partie (jusqu'à la valeur de lecture anticipée?), Puis recherchez File_2, lisez-en une partie, puis revenez à File_1 où il s'est arrêté, lisez-en plus, puis recherchez File_3, etc., etc

Si c'est le 2ème cas, alors le serveur fait beaucoup plus de recherches que nécessaire, ce qui ralentirait considérablement les choses. Dans ce cas, y at-il un réglage que je pourrais faire?

Continuation
la source

Réponses:

14

Dans les E / S disque, il y a une chose appelée ascenseur. Le sous-système de disque essaie d'éviter de heurter la tête de disque sur tous les plateaux. Il réordonnera les demandes d'E / S (lorsqu'elles ne sont pas interdites par exemple par une barrière) afin que la tête se déplace de l'intérieur du disque vers l'extérieur, et vice-versa, effectuant les E / S demandées en cours de route.

La deuxième chose est la fusion des demandes d'E / S. S'il y a de nombreuses demandes dans une courte période de temps, qui accèdent à différentes parties du fichier, le sous-système d'E / S essaiera d'obtenir toutes les données en une seule fois, au lieu d'émettre plusieurs demandes disjointes.

En ce qui concerne le réglage. Si vous êtes l'auteur de l'application, vous pouvez faire beaucoup de choses. Vous pouvez émettre de grandes E / S séquentielles chaque fois que vous le pouvez et utiliser fsync () et.al. lorsque vous devez être sûr que les données sont sur les plateaux.

Si vous êtes un administrateur système, et vous savez absolument, que les demandes de données de 2 applications sautent le pas et qu'ils essaient de lire les fichiers de manière séquentielle (par exemple, vous avez 2 DVD transcodés en parallèle), alors oui, l'augmentation de la lecture anticipée devrait aider. Sinon, vous devrez jeter un œil à vos modèles et tailles d'E / S, prendre en compte votre niveau RAID (le cas échéant) et d'autres facteurs, avant de procéder à tout réglage. Regardez quels sont vos véritables goulots d'étranglement, avant de commencer le réglage, il peut être difficile de deviner ce qui limite vraiment votre système.

Paweł Brodacki
la source
5

Sous Linux, vous pouvez définir votre propre algorithme de planification, vous avez différentes possibilités, j'ai dû en faire un morceau à l'école et cet article de Red Hat m'a beaucoup aidé. Bien que ce soit spécifiquement pour Red Hat, vous pouvez trouver ces planificateurs dans pratiquement n'importe quelle distribution Linux.

Lucas Kauffman
la source