Pour les besoins de SMP, j'ai réalisé une distribution Linux basée sur ce travail et comportant en plus un serveur HTTP et un serveur Telnet. Si on se connecte sur ce système par le port série, on peut en apprécier l'occupation mémoire :
# cat /proc/meminfo MemTotal: 31080 kB MemFree: 28640 kB MemShared: 0 kB Buffers: 32 kB Cached: 1476 kB SwapCached: 0 kB Active: 268 kB Inactive: 1416 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 31080 kB LowFree: 28640 kB SwapTotal: 0 kB SwapFree: 0 kB
Mon système démarre en moins de cinq secondes, sans compter le temps de chargement qui dépend clairement du support (CompactFlash, Flash, Ethernet, ...). Le tableau suivant récapitule les performances de toutes les distributions Linux pour Virtex que j'ai pu tester :
Tableau 6.3. Evaluation des différentes distributions
occupation mémoire | temps de démarrage | classement | |
---|---|---|---|
mon travail | 4128 Ko | 5 secondes | 1 |
Avnet | 15008 Ko | 20 secondes | 2 |
MontaVista | 25196 Ko | 35 secondes | 3 |
On peut se demander pourquoi j'arrive à avoir des performances supérieures aux autres systèmes. En ce qui concerne le temps de démarrage, j'utilise un noyau et un disque racine non-compressés, je gagne donc le temps de compression même si je perds en temps de chargement (critère non affiché dans le tableau précédent). L'idéal étant de trouver un juste équilibre entre ces deux temps. Cependant, ce n'est pas la seule raison, puisqu'avec un noyau et un disque racine compressés, mon système reste plus rapide au chargement. Cela est du simplement au fait que je ne lance pas de logiciels inutiles lors du démarrage du système, contrairement aux deux autres distributions. En ce qui concerne l'occupation mémoire, la différence principale est due au fait que ma distribution utilise µClibC comme bibliothèque C à la place de la GlibC. J'invite le lecteur à lire le chapitre A en annexe pour plus d'informations sur les performances des systèmes embarqués.