----- 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/f5667ca9e4a521c0aaa3130...
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