[Crash-utility] Thoughts on swap_usage Crash extension?

Dave Anderson anderson at redhat.com
Mon Jan 28 16:10:52 UTC 2013



----- Original Message -----
> Hi,
> 
> This is a trivial crash extension to report the actual swap
> consumption of each user process.
> What do you think, any suggestions [1]?
> 
> For example:
> 
> 	crash> ps tuned
> 	   PID    PPID  CPU       TASK        ST  %MEM     VSZ    RSS  COMM
> 	   1237      1  20  ffff8805418d7500  IN   0.0  174728   1664  tuned
> 	crash> vm -p 1237 | grep SWAP | wc -l
> 	974
> 	crash> extend swap_usage.so
> 	./swap_usage.so: shared object loaded
> 	crash> swap_usage | grep tuned
> 	 1237   3896	tuned
> 	crash> p/d 974 << 2
> 	$3 = 3896
> 	crash>
> 
> Thanks,
> Aaron
> ---
> [1]:
> https://github.com/aktlin115/crash-extension/blob/f5667ca9e4a521c0aaa31303fb74c169ac0b0efd/swap_usage.c

Hi Anton,

A couple suggestions:

The _PAGE_FILE usage is x86-specific, so you're going to have
have to either restrict its use in the MEMBER_NOT_FOUND case,
or come up with other arch-specific logic.  In fact, it wouldn't
compile on anything other than x86_64. 
   
If you set up your cmd_swap_usage() function to check for arguments,
you can specify task/pid numbers as arguments in order to avoid the
"pipe-to-grep" requirement:

	while (args[optind]) {
                switch (str_to_context(args[optind], &value, &tc))
                {
                case STR_PID:
                        for (tc = pid_to_context(value); tc; tc = tc->tc_next) {
                        	show_swap_usage(tc, exists);
                        }
                        break;

                case STR_TASK:
                        show_swap_usage(tc, exists);
                        break;

                case STR_INVALID:
                        error(INFO, "invalid task or pid value: %s\n",
                                args[optind]);
                        break;
                }

		subsequent++;
		optind++;
	}

And a "help" page would be nice...

Thanks,
  Dave




More information about the Crash-utility mailing list