Processus et threads : pourquoi l'ordinateur continue-t-il de fonctionner même avec 100 onglets ouverts ?
Photo : Medium

Processus et threads : pourquoi l'ordinateur continue-t-il de fonctionner même avec 100 onglets ouverts ?

Le système de planification divise le temps d'exécution du processeur en tranches très fines. Comprendre ce mécanisme, c'est comprendre pourquoi l'ordinateur est lent.

Votre ordinateur dispose de 8 cœurs, mais exécute actuellement des centaines de processus. Il n'y a pas de miracle : le noyau du système d'exploitation divise le temps CPU en tranches très fines et les attribue à tour de rôle à chaque processus.

Où se situe ce processus atypique ?

Chaque processus dispose de son propre espace d'adressage. Les deux processus ne peuvent pas lire la mémoire l'un de l'autre ; ainsi, si l'un plante, l'autre continue de fonctionner. En revanche, pour échanger des données, il faut passer par un canal, un socket ou une mémoire partagée — ce qui est coûteux.

Les threads font partie du même processus et partagent la même mémoire. L'échange de données se résume à des opérations de lecture et d'écriture dans la même zone de mémoire, ce qui est très rapide, mais en contrepartie, vous devez gérer vous-même les conflits d'accès.

Décalage temporel et changement de contexte

  • Chaque thread se voit attribuer une tranche de temps, généralement de quelques millisecondes
  • Une fois cette tranche terminée, le noyau vide l’ensemble des registres puis charge ceux du thread suivant — c’est ce qu’on appelle un changement de contexte
  • Chaque changement de contexte prend environ quelques microsecondes, auxquelles s’ajoute la perte de performance due au refroidissement du cache du processeur

C'est pourquoi la création d'un trop grand nombre de threads entraîne un ralentissement : le processeur passe la majeure partie de son temps à basculer d'un thread à l'autre au lieu d'effectuer des calculs proprement dits.

Pourquoi le système reste-t-il fluide même avec 100 onglets ?

La plupart des onglets sont en attente et n'effectuent aucun calcul : ils attendent une connexion réseau, que vous fassiez défiler la page ou qu'un délai expire. Un thread en attente ne consomme pas de CPU ; le processeur le retire de la file d'attente jusqu'à ce que l'événement se produise.

Les ralentissements sont rarement dus à un manque de puissance du processeur. Ils sont généralement dus à un manque de mémoire vive, ce qui oblige le système à recourir à la mémoire sur disque, ou à un processus qui monopolise le disque dur.

Essayer sur mon ordinateur

ps -eLf | wc -l          # tổng số luồng đang có
vmstat 1 5               # cột cs = số lần chuyển ngữ cảnh mỗi giây
pidstat -w 1 3           # tiến trình nào chuyển ngữ cảnh nhiều nhất

Si la colonne cs atteint plusieurs centaines de milliers par seconde alors que l'ordinateur n'effectue aucune tâche lourde, il est presque certain qu'un logiciel est en train de consommer des ressources inutilement.

Chia sẻ

Thảo luận