Pourquoi Windows n’est-il pas considéré comme adapté aux systèmes temps réel / serveurs haute performance?

J’espère que cette question n’est pas trop subjective, mais pourquoi Windows est-il considéré comme un système d’exploitation inadapté aux systèmes temps réel et aux serveurs hautes performances? Existe-t-il des documents techniques ou des études qui évaluent ses performances par rapport aux alternatives * nix?

Je n’ai jamais entendu d’explication sur la raison pour laquelle les développeurs s’opposent à l’utilisation de Windows pour ces types de systèmes. Il faut être justifié.

Notez que je vous pose des questions sur Windows CE / Windows Server, pas sur les versions de bureau du système d’exploitation.

Un système d’exploitation en temps réel nécessite un certain comportement déterministe. Vous voulez pouvoir définir des priorités de tâches spécifiques qui sont toujours respectées et dont les interruptions ont une priorité spécifique. Vous ne pouvez pas avoir un système d’exploitation pouvant décider de donner la priorité à un démon ou à une tâche en dehors de votre application. En fonction de votre système, les microsecondes peuvent avoir de l’importance, un système d’exploitation qui s’éteint pendant 50 usecs pour gérer un démon en dehors de votre application peut être mortel.

Cela dit, cela ne signifie pas que vous ne pouvez pas utiliser Windows pour une application en temps réel. En fait, je l’ai fait plusieurs fois, il n’y avait que les aspects en temps réel qui étaient gérés par des cartes matérielles et une mise en mémoire tampon intégrée au système. Si le système d’exploitation était en retard de plusieurs centaines de millisecondes, cela signifiait simplement que l’affichage pouvait avoir un hoquet perceptible dans les données. Aucune donnée n’a été perdue ou collectée. Nous avons également pu éviter les problèmes en personnalisant les autres tâches exécutées (à peu près la même chose que les joueurs de base).

Alternativement, j’ai eu récemment une demande de faire un système en temps réel où le matériel en temps réel émettrait un rappel que le code Windows verrait et enverrait ensuite un message USB. Le message devait être envoyé en microsecondes et quel que soit le délai, il devait être déterministe pour que le système recevant le message USB puisse compenser le retard. Cela m’a frappé comme quelque chose que Windows n’est pas adapté pour et le design a été retravaillé.

Même si cette question est maintenant fermée, je pensais que je devrais corriger cette réponse avec un lien vers un article de blog plus long que j’ai écrit sur le sujet.

Windows a une réputation de longue date à ce sujet, basée principalement sur de mauvaises expériences isolées (tout le monde en a quelques-unes, n’est-ce pas?) Qui persiste lors de révisions majeures obsolètes. Malheureusement, la grande majorité des administrateurs système n’ont jamais vu aucun des documents d’optimisation des performances disponibles gratuitement auprès de Microsoft, et encore moins ont pris la peine de régler leurs systèmes de manière appropriée.

Les systèmes critiques en temps réel peuvent fonctionner sous Windows. Regardez les solutions de centre d’appels, par exemple – ceci est l’un de mes domaines d’expertise et je supervise plusieurs dizaines de serveurs à cet effet. Ces machines peuvent disposer de centaines de lignes traitant simultanément la reconnaissance vocale et la synthèse vocale, communiquant avec des bases de données et des systèmes de routage d’appels programmables. Les retards dans la réponse à l’équipement de la compagnie de téléphone peuvent entraîner la suppression de tout ou partie de ces appels ou une dégradation importante de la qualité des appels. Nous devons encore implémenter des antivirus et autres mesures de sécurité, et ces systèmes fonctionnent.

Les tâches les plus importantes sont les suivantes: * Éliminez les tâches et processus automatisés périodiques, tels que la vérification et l’application des mises à jour, la maintenance des disques (opérations de défragmentation et nettoyage) et les parsings complètes. * Avoir assez de mémoire pour que le système ne soit pas bloqué par la permutation * Placez votre swap sur sa propre partition afin que la fragmentation n’interfère pas avec le fichier de swap (certains de mes systèmes n’en ont pas et fonctionnent toujours) * fournisseur d’antivirus pour affiner leur produit de telle sorte qu’il interfère le moins possible avec votre (vos) serveur (s) tout en offrant une protection adéquate – la plupart des logiciels antivirus sont destinés à un usage bureautique et non à un serveur. politiques de sécurité locales

En fin de compte, les systèmes UN * X peuvent avoir les mêmes problèmes si vous ne les administrez pas correctement: tâches planifiées, configuration de swap inadéquate et logiciels de sécurité tiers intrusifs. Ils sont également négligés en matière de sécurité si souvent que cela n’est pas plus surprenant quand ils sont compromis que lorsqu’un serveur Windows est compromis.

Vous devez avoir un équilibre. Les deux plates-formes peuvent être également mal gérées, et les deux plates-formes peuvent être bien adaptées. Si vous parlez principalement aux utilisateurs de la plate-forme UN *, eh bien, ils ont des raisons d’aimer leur plateforme et ont beaucoup de préjugés contre Windows et vous obtiendrez des réponses qui reflètent cela. Si vous parlez à des gens de Microsoft, vous obtiendrez la même chose sous leur angle.

La chose la plus importante lorsque vous choisissez la plate-forme doit être le support fournisseur pour l’APPLICATION que vous utilisez – dans laquelle sont-ils plus investis et lesquels ont-ils favorisés dans leur développement? Qu’est-ce qui s’est avéré le plus efficace et que restra-t-il disponible à l’avenir?

Si vous voulez une réponse, vous devriez nous donner des faits avec lesquels travailler. Qui a dit que Windows ne convenait pas aux serveurs hautes performances? Nous n’avons aucune idée, mais vous faites apparemment. Vous êtes donc mieux qualifié que nous pour y répondre, n’est-ce pas?

Comme pour les systèmes temps réel? C’est vrai. Windows n’est pas adapté car ce n’est pas un OS temps réel. La même chose est vraie pour Linux et OSX, btw. Les systèmes temps réel ont besoin de systèmes d’exploitation assez spécialisés. Et les systèmes d’exploitation traditionnels destinés à la performance, au débit et à la réactivité ne vont pas faire l’affaire, qu’ils soient écrits par Microsoft ou par quelqu’un d’autre.

Les systèmes en temps réel ont généralement besoin d’un temps de réponse maximal. Windows ne peut pas fournir de telles garanties.

En ce qui concerne les serveurs Windows qui font de hautes performances, selon vous, quelle est l’utilisation de StackOverflow?

Les réponses que vous avez reçues étaient correctes: Windows n’est tout simplement pas un RTOS. Pour en être un, il devrait être en mesure de fournir des garanties spécifiques concernant la planification. Le comportement nécessaire pour cela n’est pas particulièrement compatible avec ce qui convient à un serveur ou à un poste de travail classique.

Quant à “haute performance”, c’est juste flou. Les éditions de serveur de Windows peuvent exécuter des systèmes hautes performances.