Je voudrais savoir combien de temps mon application attend des E/S. Je cours cette application de Java sur Ubuntu/Linux. J'utilise votre profileur. Suggérer s'il existe un autre outil de profilage pour mesurer le temps d'E/S.Comment mesurer le temps d'E/S d'une application Java s'exécutant sous Ubuntu?
Répondre
Utilisez strace
pour surveiller les appels système I/O. Lisez la page man
pour une introduction.
Youtkit est excellent pour avoir un microscope zoom dans votre application. Dans ces situations, il est souvent avantageux de regarder aussi de l'extérieur vers une vue macroscopique et de prendre des mesures très approximatives pour voir si vous êtes lié à l'UC ou à l'E/S. Si votre application fonctionnant à plein régime sur un autre "vide" n'utilise que 10% de CPU (et par extension, elle attend environ 90% d'E/S), alors étudier ce que vous pouvez faire sur le côté E/S a beaucoup de sens si vous voulez augmenter le débit. Si, par contre, tous vos noyaux tournent à plus de 90%, vous ne gagnerez pas grand-chose car notre application est liée à l'UC. Les commandes top, iostat et vmstat peuvent donner ces estimations approximatives. Strace peut donner un aperçu du nombre de fois que les fichiers sont ouverts et fermés, les opérations de lecture effectuées, etc .... Dans ce cas, apprenez aussi à utiliser grep ou perl pour passer au crible la montagne de données que cet outil produit. Gardez un œil sur l'efficacité de l'utilisation de la mémoire et sur la connaissance de votre infrastructure. Si vous voyez dans vmstat qu'un grand nombre de blocs sont inversés, resunez la mémoire jusqu'à ce qu'elle tombe à zéro ou que tous les autres efforts soient relativement inutiles. Il n'est pas clair à partir de votre question si votre objectif est la latence, la gigue, le débit, ... mais ce genre d'estimations approximatives relativement rapides aide à déterminer où regarder avec le microscope.
Vous pouvez utiliser RotateRight/Zoom ou LTProf. Ou, si vous n'êtes pas après une haute précision, vous pouvez simplement prendre 10 ou 20 échantillons de pile en utilisant lsstack et voir ce que sont les pourcentages d'E/S, ou faire l'équivalent en Java.
Voulez-vous le côté Java ou Linux? –