Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package yast2-installation for openSUSE:Factory checked in at 2021-05-12 19:31:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-installation (Old) and /work/SRC/openSUSE:Factory/.yast2-installation.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-installation" Wed May 12 19:31:31 2021 rev:469 rq:891911 version:4.4.6 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-installation/yast2-installation.changes 2021-04-29 22:44:47.932192764 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-installation.new.2988/yast2-installation.changes 2021-05-12 19:31:48.775138094 +0200 @@ -1,0 +2,9 @@ +Thu Apr 29 15:59:52 UTC 2021 - Martin Vidner <mvid...@suse.com> + +- Allow memory profiling of the main installer process, via + boot parameters: (bsc#1182649) + - MASSIF=1 enables Valgrind/Massif (C/C++ level) + - MEMORY_PROFILER=1 enables Ruby level +- 4.4.6 + +------------------------------------------------------------------- Old: ---- yast2-installation-4.4.5.tar.bz2 New: ---- yast2-installation-4.4.6.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-installation.spec ++++++ --- /var/tmp/diff_new_pack.q63KbF/_old 2021-05-12 19:31:49.495135218 +0200 +++ /var/tmp/diff_new_pack.q63KbF/_new 2021-05-12 19:31:49.499135202 +0200 @@ -17,7 +17,7 @@ Name: yast2-installation -Version: 4.4.5 +Version: 4.4.6 Release: 0 Summary: YaST2 - Installation Parts License: GPL-2.0-only ++++++ yast2-installation-4.4.5.tar.bz2 -> yast2-installation-4.4.6.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-installation-4.4.5/bin/memsample-csv-plot new/yast2-installation-4.4.6/bin/memsample-csv-plot --- old/yast2-installation-4.4.5/bin/memsample-csv-plot 2021-04-27 15:09:41.000000000 +0200 +++ new/yast2-installation-4.4.6/bin/memsample-csv-plot 2021-05-09 21:52:22.000000000 +0200 @@ -10,7 +10,7 @@ set timefmt "%Y-%m-%dT%H:%M:%S+00:00" set xdata time set xtics rotate -set format x "%H:%M" +set format x "%H:%M:%S" set terminal png size 800, 600 set xlabel "wall clock (UTC)" set ylabel "used [MiB]" @@ -22,10 +22,10 @@ # 4 mem_total_k, 4 mem_used_k, 6 mem_free_k, # 7 swap_total_k, 8 swap_used_k, 9 swap_free_k, # 10 rss, 11 rss_all, 12 datetime -plot "${CSV}" using 12:(\$10/1024) title "y2start RSS" with lines,\ - "" using 12:(\$11/1024) title "y2start+children RSS" with lines,\ - "" using 12:(\$2/1024) title "disk" with lines,\ - "" using 12:(\$5/1024) title "mem" with lines,\ - "" using 12:((\$2+\$5)/1024) title "mem+disk" with lines,\ - "" using 12:(\$8/1024) title "swap" with lines +plot "${CSV}" using 12:(\$10/1024) title "y2start RSS" with lines,\ + "" using 12:(\$11/1024) title "y2start+children RSS" with lines,\ + "" using 12:(\$2/1024) title "disk" with lines,\ + "" using 12:(\$5/1024) title "mem" with lines,\ + "" using 12:((\$2+\$5)/1024) title "mem+disk" with lines,\ + "" using 12:(\$8/1024) title "swap" with lines EOS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-installation-4.4.5/doc/memory-profile-valgrind-massif.md new/yast2-installation-4.4.6/doc/memory-profile-valgrind-massif.md --- old/yast2-installation-4.4.5/doc/memory-profile-valgrind-massif.md 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-installation-4.4.6/doc/memory-profile-valgrind-massif.md 2021-05-09 21:52:22.000000000 +0200 @@ -0,0 +1,50 @@ +## Massif Basics + +Valgrind is an instrumentation framework that runs a program by simulating +every instruction. It has several tools. Memcheck is the original one, used +for detecting memory errors. Massif is a memory profiler. + +(The output it produces, example: https://github.com/yast/yast-installation/wiki/Massif-Sample-Output ) + +The basic invocation of Massif is simple, +`valgrind --tool=massif my_program its_arguments`, so for YaST it is + +```console +# valgrind --tool=massif /usr/lib/YaST2/bin/y2start sw_single qt +``` + +Or, if we don't want to dig in the startup scripts, we use a bigger gun: + +```console +# valgrind --tool=massif --trace-children=yes yast2 sw_single +``` + +That writes out massif.out.99999 where 99999 is process ID. +To make them somewhat more readable, use the included tool `ms_print` +which adds an ASCII graph and computes percentages: + +``` +ms_print massif.out.19015 > massif.out.19015.txt +``` + +### Debuginfo + +The backtraces will contain some names, at the boundaries of shared libraries +But to see names inside libraries Massif needs debuginfo files. + +## Massif at Installation Time + +tl;dr: Boot with `extend=gdb MASSIF=1`. + +1. Install Massif. It is part of the [**gdb** extension][gdb-ext], so use + `extend=gdb` at the boot prompt, or run `extend gdb` in an inst-sys shell. + +2. Install Debuginfo. For Tumbleweed an automatic downloader is in place + from <https://debuginfod.opensuse.org/>. + +3. Wrap Massif around the main installer process. + The [startup/YaST2.call script][PR935] will do it if the environment + variable `MASSIF=1`, putting the logs where save_y2logs expects them. + +[gdb-ext]: https://github.com/openSUSE/installation-images/blob/master/data/root/gdb.file_list +[PR935]: https://github.com/yast/yast-installation/pull/935 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-installation-4.4.5/package/yast2-installation.changes new/yast2-installation-4.4.6/package/yast2-installation.changes --- old/yast2-installation-4.4.5/package/yast2-installation.changes 2021-04-27 15:09:41.000000000 +0200 +++ new/yast2-installation-4.4.6/package/yast2-installation.changes 2021-05-09 21:52:22.000000000 +0200 @@ -1,4 +1,13 @@ ------------------------------------------------------------------- +Thu Apr 29 15:59:52 UTC 2021 - Martin Vidner <mvid...@suse.com> + +- Allow memory profiling of the main installer process, via + boot parameters: (bsc#1182649) + - MASSIF=1 enables Valgrind/Massif (C/C++ level) + - MEMORY_PROFILER=1 enables Ruby level +- 4.4.6 + +------------------------------------------------------------------- Tue Apr 27 09:23:17 UTC 2021 - Knut Anderssen <kanders...@suse.com> - Remove Yast::LanItems dependency (bsc#1185338) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-installation-4.4.5/package/yast2-installation.spec new/yast2-installation-4.4.6/package/yast2-installation.spec --- old/yast2-installation-4.4.5/package/yast2-installation.spec 2021-04-27 15:09:41.000000000 +0200 +++ new/yast2-installation-4.4.6/package/yast2-installation.spec 2021-05-09 21:52:22.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-installation -Version: 4.4.5 +Version: 4.4.6 Release: 0 Summary: YaST2 - Installation Parts License: GPL-2.0-only diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-installation-4.4.5/startup/YaST2.call new/yast2-installation-4.4.6/startup/YaST2.call --- old/yast2-installation-4.4.5/startup/YaST2.call 2021-04-27 15:09:41.000000000 +0200 +++ new/yast2-installation-4.4.6/startup/YaST2.call 2021-05-09 21:52:22.000000000 +0200 @@ -352,24 +352,41 @@ log "\tUI_ARGS: $Y2_UI_ARGS" log "\tQT_IM_MODULE: $QT_IM_MODULE" + Y2START=/usr/lib/YaST2/bin/y2start + Y2START_ARGS="$Y2_MODULE_NAME $Y2_MODE_FLAGS $Y2_MODULE_ARGS $Y2_MODE $Y2_UI_ARGS" + + # https://rubygems.org/gems/memory_profiler + if [ "$MEMORY_PROFILER" = "1" ]; then + Y2START_ARGS="\ + --color \ + --out=/var/log/YaST2/memprof.txt \ + $Y2START \ + -- \ + $Y2START_ARGS" + Y2START="ruby-memory-profiler" + fi + + # https://www.valgrind.org/docs/manual/ms-manual.html + if [ "$MASSIF" = "1" ]; then + Y2START_ARGS="\ + --tool=massif \ + --massif-out-file=/var/log/YaST2/massif-%p.out \ + $Y2START \ + $Y2START_ARGS" + Y2START="valgrind" + fi + if [ "$Y2GDB" != "1" ]; then - $OPT_FBITERM y2start \ - "$Y2_MODULE_NAME" \ - $Y2_MODE_FLAGS \ - $Y2_MODULE_ARGS \ - $Y2_MODE \ - $Y2_UI_ARGS + $OPT_FBITERM \ + "$Y2START" \ + $Y2START_ARGS Y2_EXIT_CODE=$? else GDBCMDS=/var/lib/YaST2/gdb-cmds echo tty /dev/tty10 > $GDBCMDS - echo set args "$Y2_MODULE_NAME" \ - $Y2_MODE_FLAGS \ - $Y2_MODULE_ARGS \ - $Y2_MODE \ - $Y2_UI_ARGS >> $GDBCMDS echo set pagination off >> $GDBCMDS - /usr/bin/gdb -x $GDBCMDS /usr/lib/YaST2/bin/y2start | \ + echo set args $Y2START_ARGS >> $GDBCMDS + /usr/bin/gdb -x $GDBCMDS "$Y2START" | \ tee /var/log/YaST2/gdb-log Y2_EXIT_CODE=$? fi