Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Martin Schurz - Linux Performance

Martin Schurz - Linux Performance

Performanceprobleme begegnen uns häufig, Lösungen dafür sind nicht immer einfach oder offensichtlich. Ich möchte verschiedene Methoden zur Analyse von Problemen vorstellen, die sich in der Praxis bewährt haben. Zusätzlich werde ich auf mehrere Tools eingehen, die bei tieferen Analyse helfen. Die meisten davon können auch für Applikationsspezifische Probleme genutzt werden, ins Besondere auch für Java, PHP und Python. Im Vortrag wird mit praxisnahen, konkreten Beispielen der Einsatz der Tools und Methoden demonstriert.

More Decks by Software Architektur Entwickler Community Dresden

Other Decks in Programming

Transcript

  1. WARUM WARUM Kann man sich die Ressourcen leisten? erreicht man

    die gewünschten Antwortzeiten? Nachhaltigkeit!
  2. LOAD AVERAGE LOAD AVERAGE # uptime 13:17:41 up 146 days,

    ..., load average: 14.11, 15.19, 16.00
  3. OMG … DIE LOAD IST OMG … DIE LOAD IST

    HOCH !1!1 11! HOCH !1!1 11!
  4. SPEICHER UND KERNEL METRIKEN SPEICHER UND KERNEL METRIKEN Tools: free,

    vmstat, fincore, slabtop herausfinden, wie der RAM genutzt wird wie steht es um den Kernel
  5. TOOLS IN DER CLOUD TOOLS IN DER CLOUD Google /

    AWS / Azure Default Datadog Honeycomb …
  6. ÜBERBLICK BEHALTEN ÜBERBLICK BEHALTEN Kennt euch mit euren Tools aus

    Krisentools sollten vor der Krise installiert sein Probleme sind zum Analysieren da Stellt Fragen und sucht Antworten
  7. ANTI-METHODEN ANTI-METHODEN “Der andere wars” aka “Die Datenbank ist schuld”

    Chaos Debugging Irgendwas ändern Neustarten Tool X installieren und ausprobieren Zögern und zuschauen
  8. 60 SEKUNDEN ANALYSE 60 SEKUNDEN ANALYSE uptime dmesg | tail

    vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV,TCP,ETCP 1 top Linux Performance Analysis in 60 seconds
  9. IN JEDEM FALL IN JEDEM FALL zuerst kommt die Frage

    dann die Antwort schaut auf einfache, verständliche Metriken
  10. EBPF EBPF ursprünglich für Netzwerkcode entwickelt inzwischen in allen teilen

    von Linux enthalten eine eigene Art Software https://ebpf.io/what-is-ebpf
  11. BCC TOOLS BCC TOOLS Sammlung vieler Tracing Tools sehr geringer

    Overhead Production Safe! https://github.com/iovisor/bcc
  12. CPU PROFILING CPU PROFILING Tool: perf Sampling von Aktivitäten Sammelt

    Stack Traces Samplingfrequenz hat Einfluss auf Leistung
  13. Flame Graph Search mys.. m.. mysqld`row_search_for_mysql mysqld`handle_one_connection my.. mysqld`do_command my..

    mysqld`find_all_keys mysqld`btr.. mysq.. mysqld`handle_select mysqld`JOIN::exec l.. mys.. libc.. mysqld`sub_select mysqld`eval.. m.. my.. mysqld`mysql_select libc.so.1`_lwp_start mysql.. m.. mysq.. mysqld`handler::read_multi_range.. mysq.. mysqld`mysql_execute_command mysqld`ha_innobase::general_fetch mysqld`ha_innobase::general_fetch mysqld`row_.. mys.. mysql.. mysqld`ro.. mysql.. mysqld`row_search_for_mysql mysqld`filesort mysqld`dispatch_command mysqld`mysql_parse l.. mysq.. mysqld`join_read_prev mysqld`ha_innobase::index_next_.. mysqld`execute_sqlcom_select mysql.. mysql.. l.. m.. m.. mys.. my.. mysqld`row_sel_get_.. mysqld`ha_innobase::index_prev mysqld`QUICK_RANGE_SELECT::get_n.. mysq.. mysqld`do_select m.. my.. mysqld`handler::read_range_next libc.so.1`_thrp_setup mysq.. mysqld`btr.. mysqld`create_sort_index my..
  14. FLAMEGRAPHS FLAMEGRAPHS CPU Analyse, kann aber auch IO und andere

    Äußerst Hilfreich um konkrete Ansatzpunkte können auch aus anderen Tracings erstellt werden https://github.com/brendangregg/FlameGraph
  15. FLAMESCOPE FLAMESCOPE Frage: was, wenn mich nur ein paar Millisekunden

    eines Flamegraph interessieren? a visualiza on tool that uses subsecond offset heat maps and flame graphs to analyze periodic ac vity, variance, and perturba ons https://github.com/Netflix/flamescope
  16. ZUM MERKEN ZUM MERKEN erst die Frage, dann die Antwort

    es gibt mehr als genug Tools FlameGraphs sind genial
  17. LAST LAST taskset -c 3 stress -c 500 taskset -c

    3 stress -i 1 taskset -c 3 stress -c 1 -i 1
  18. NETZWERK NETZWERK nstat -s nstat -s | grep -i ret

    ss -ntp ss -nltp tcpdump -nn port 53 tcpdump -nn port 80 -A
  19. TRACING TRACING strace -tttT -f nslookup strace -tttT -e network

    -f nslookup strace -tttT -e file -f nslookup pgrep httpd strace -tttT -e file -f -p (httpd pid) www.google.de www.google.de www.google.de
  20. BCC TOOLS BCC TOOLS ls /usr/share/bcc/tools/ /usr/share/bcc/tools/opensnoop /usr/share/bcc/tools/opensnoop -n httpd

    /usr/share/bcc/tools/execsnoop /usr/share/bcc/tools/cachestat /usr/share/bcc/tools/fileslower 0 /usr/share/bcc/tools/tcpstates
  21. PROFILING PROFILING perf record -F 99 -a -g – sleep

    10 perf report -n --stdio /usr/share/bcc/tools/profile -dfF 99 30 | ./FlameGraph/flamegraph.pl > perf.svg https://github.com/brendangregg/FlameGraph https://github.com/Netflix/flamescope