Pourquoi le système est-il temps CPU (% sy) de haut?

Je suis en cours d'exécution d'un script qui se charge de gros fichiers. J'ai couru le même script dans un seul core OpenSuSe serveur et PC quad core. Comme prévu dans mon PC, il est beaucoup plus rapide que dans le serveur. Mais, le script ralentit le serveur et il est impossible de faire autre chose.

Mon script est

for 100 iterations
Load saved data (about 10 mb)

temps myscript (PC)

real    0m52.564s
user    0m51.768s
sys    0m0.524s

temps myscript (dans le serveur)

real    32m32.810s
user    4m37.677s
sys    12m51.524s

Je me demande pourquoi "sys" est si élevé lorsque j'exécute le code dans le serveur. J'ai utilisé la commande top pour vérifier la mémoire et le processeur.Pourquoi le système est-il temps CPU (% sy) de haut?
Il semble qu'il est encore libre de la mémoire, de sorte que la permutation n'est pas la raison. % sy est si élevé, c'est probablement la raison pour laquelle la vitesse du serveur, mais je ne sais pas ce qui est à l'origine de % sy si haut. Le processus qui utilise le plus fort pourcentage de CPU (99%) est "myscript". %wa est égal à zéro dans la capture d'écran, mais parfois, il devient très élevé (50 %).

Lorsque le script est en cours d'exécution, la charge moyenne est supérieure à 1, mais n'ont jamais vu pour être aussi élevé que 2.

J'ai aussi vérifié mon disque:

strt:~ # hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   16480 MB in  2.00 seconds = 8247.94 MB/sec
 Timing buffered disk reads:   20 MB in  3.44 seconds =   5.81 MB/sec

john@strt:~> df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       245G  102G  131G  44% /
udev            4.0G  152K  4.0G   1% /dev
tmpfs           4.0G   76K  4.0G   1% /dev/shm

J'ai vérifié ces choses, mais je ne suis toujours pas sûr de ce qu'est le vrai problème dans mon serveur et comment le résoudre. Quelqu'un peut-il identifier une raison probable de la lenteur? Quelle pourrait être la solution?
Ou est-il autre chose que je dois vérifier?

Merci!

  • Ce "problème"? Si vous demandez à un système pour faire beaucoup de travail, il va être très occupé jusqu'à ce qu'il fait. Avec un script typique, presque tout le "travail" aura lieu dans les processus enfants (ou noyau de l'espace des tâches sur leur compte, comme les I/O), pas dans le processus du shell d'interpréter le script.
  • Lorsque le script est en cours d'exécution, d'autres utilisateurs dans le serveur pour obtenir de réponse lent. Je veux exécuter le script plus rapide et aussi pour ne pas déranger les autres utilisateurs. Si l'ajout de certaines ressources est la solution, je pouvais le faire. Mais, je ne sais pas ce qui pourrait vous aider.
  • Si vous vous demandez quelle sorte de système d'achat / améliorations à apporter pour une meilleure performance, c'est probablement une question de super-utilisateur. Si vous voulez essayer de rendre la tâche plus efficace (bricolé solutions peuvent avoir beaucoup de place pour de l'amélioration), vous allez avoir à être beaucoup plus précis sur ce qu'il fait et comment - code, ou au moins une étroite description fonctionnelle.
  • J'ai peut-être choisi le mauvais forum. Je suis désolé pour ça. Mais, avant de penser à ce que les ressources de l'acheter, je suis intéressé de savoir quelles sont les causes de système de haut? Est-il de l'espace disque (faut pas que j'ai assez d'espace libre)? Ou est-ce la vitesse de disque? ou quelque chose d'autre? Donc, je veux d'abord explorer la raison (si cela a un sens)
  • Votre script est de passer la plupart du temps dans le noyau (sys 12m51.524s), éventuellement faire quelques I/O operation. Comme il semble que le script n'beaucoup d'I/O et d'échange. Je vous recommande de regarder dans certains des paramètres du noyau comme swapiness et de l'écriture de pages sale. Aussi, vous pouvez installer et configurer sysstat package pour l'analyse de la sar resports, qui vous donnera plus de renseignements sur ce qui s'est passé pendant ce temps. En outre, vous pouvez également besoin de regarder dans le noyau tourne-disques `sysctl -a | egrep -i " (swap|sale)'
InformationsquelleAutor Abhishek | 2013-10-23