Weekly Snap: SAP Monitoring, Puppet Events & Recruiting

weekly snap25 February – 1 March was packed with events, a recruiting mix-up alongside tips for monitoring and development.
Eva counted 51 days to the OSDC with Kenny’s presentation on “Expert Troubleshooting: Resolving MySQL Problems Quickly” and reflected on our recent flood of Puppet training courses and events.
Of events and Puppet, Tom and Bernd presented on Puppet and Icinga at the German Unix User Group spring conference.
Marius then shared his memory footprint analysis for various scripts with the help of Valgrind and Massif, while William showed how to monitor SAP with Icinga / Nagios.
We had our annual meeting, and offered to help another open source company out with their search for monitoring consultants, adding a new friend to meet at CeBIT in the process.
Last but not least, we congratulated Marcus as he finished his apprenticeship and begins his work as a Systems Engineer with the managed services team.

Memory footprint von Scripts

Hin und wieder stellt sich die Frage in welcher Sprache man ein Programm eigentlich schreiben sollte. Neben persönliche Vorlieben, Features und Modellen welche die Sprache unterstützen soll, gilt es aber auch ein Auge auf der Performance zu haben.
Bevor es nun ungezähmt aus dem Wald schallert: “Klar, C, schneller geht’s kaum”, wage ich anzumerken dass auch die Performance in der Schreibgeschwindigkeit zählt, oder der Praktikabilität, usw. Allerdings interessiert mich in diesem Artikel mehr der Speicherverbrauch.
Scriptsprachen welche meistens dynamisch typisieren oder eine Mischform aus dynamischer und statischer Typisierung verwenden brauchen oft mehr Speicher als eigentlich nötig. Daraus würde ich gerne einen Vergleich aus den populärsten Sprachen ziehen.
Basis hierfür ist ein 10.9673 MB großer JSON Dump (sagen wir halt 11MB), mit 100000 Objekten innerhalb eines Arrays. Als Implementierung wurde immer die kleinste gewählt, möglichst streams, keine Zwischenspeicher und keine Ausgabe (Ergebnis wurde natürlich vorher geprüft bevor mit der Zeitnahme begonnen wurde.
Die Messung wurde mit Valgrind durchgeführt (mit dem tool massif) und als Vergleichswert der maximale Peak in Mebibyte gemessen.

chart_time2

Nun, verloren hat ganz klar – und auch leider – PHP. Mit fast 240 Mebibyte aufgeblasenen Heap wundert man sich fast schon was eigentlich drin steht – im Speicher. Ganz gut im Mittelfeld platziert sich der Liebling der Administratoren, Perl – Gut schnell und annehmbarer Speicherverbrauch. Node ist zwar schnell aber nicht weit verbreitet weshalb es eher (auch hier ein klares leider) ein klares Schattendasein führt. Zu C++ ist noch zu sagen das hier alles Dynamisch angelegt und ein großes Framework verwendet wurde, weshalb das Ergebnis kaum zu rechnen ist.
Dieser Test ist natürlich auch in keinster Weise repräsentativ. Werden doch Shared Objects in den Speicher geladen und andere Dinge unternommen welche einen objektiven und ausgeglichenen Vergleich kaum zulassen. Aber man kann doch Stärken und Schwächen erkennen, da es sich zumindest bei den Scriptsprachen um Standardinstallationen aus einem Ubuntu (12.04 LTS) System handelt. Ansonsten folgen noch ein paar hübsche Graphen.

 

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Weekly Snap: Massif, Updian 0.4, Data Privacy & Icinga Logo Photos

9 – 13 July looked at data privacy, memory profiling, Updian and launched an Icinga logo photo contest.
100 days till OSMC 2012, Eva gave the stage to Reinhard Scheck and his presentation on “Cacti Graphing Solution”. She then moved on to kick off an Icinga logo competition, looking for the best photo of the icon out and about.
Following on, Gunnar shared his tip for heap memory profiling with Massif while Ronny reminded us of Updian’s v0.4 release featuring yum support.
Bernd ended the week pondering the inconsistencies of data privacy laws and habits in the social media sphere, upon learning that state data privacy bureaus were reviewing company Google Analytics accounts in Germany.

Memory-Profiling mit Massif

Mit dem Heap-Profiler Massif kann man schnell herauszufinden, welcher Teil eines Programms am meisten Arbeitsspeicher verbraucht. Massif ist Teil von Valgrind und kann unter Ubuntu z.B. so installiert werden:

$ sudo aptitude install valgrind

Danach kann man das zu profilende Programm mit Massif starten:

$ valgrind --tool=massif ./pfad/zum/eigenen/programm --parameter

Massif schreibt die Profiling-Ergebnis in eine Datei mit dem Namen massif.out.<PID>. Wer das ganze etwas grafischer haben möchte, kann den Massif Visualizer verwenden (Paket: massif-visualizer):