From 7bcde781975ddf4a5ce266a9214ba26f563ed063 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Sun, 14 Sep 2014 10:30:13 -0700 Subject: Import of vwm3 changes from published source tgz Major changes from vwm2 include: - Introduction of integrated X client process and descendants monitoring in the form of per-window composited overlays. The rendering is done using the Composite, Damage, and Render extensions. When the monitors are visible, vwm3 is a compositing manager. When invisible, vwm3 continues to be an immediate-mode classic X11 minimalist window manager. Monitors are toggled via Mod1-;, Mod1-LeftArrow and Mod1-RightArrow may be used to decrease and increase the sampling frequency, respectively. Mod1-' clears the monitored tasks history for the focused window when monitoring is visible. This feature depends on the CONFIG_CHECKPOINT_RESTORE kernel configuration option for the discovery of descendant processes. Without this kernel option enabled, you'll only get a single process monitored per window; the X client process as indicated by the _NET_WM_PID atom of the window. A library called libvmon has been introduced for the abstraction of lightweight system and process statistics sampling. Since vwm2 received backported features unrelated to monitoring or compositing while vwm3 was developed, there isn't really much difference between the two outside the monitoring context. This isn't to say there isn't much activity in the code, the addition of compositing and monitoring requires a substantial amount of code relative to the scale of vwm[12]. --- libvmon/defs/proc_stat.def | 105 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 libvmon/defs/proc_stat.def (limited to 'libvmon/defs/proc_stat.def') diff --git a/libvmon/defs/proc_stat.def b/libvmon/defs/proc_stat.def new file mode 100644 index 0000000..db704e9 --- /dev/null +++ b/libvmon/defs/proc_stat.def @@ -0,0 +1,105 @@ +#include "_begin.def" + + /* member name, symbolic constant, human label, human description (think UI/help) */ + /* /proc/$pid/comm */ +vmon_datum_char_array( comm, PROC_STAT_COMM, "Cmd", "/proc/$pid/comm raw contents (with the \n substituted with \0)") + + /* /proc/$pid/cmdline */ +vmon_datum_char_array( cmdline, PROC_STAT_CMDLINE, "Cmdline", "/proc/$pid/cmdline raw contents") +vmon_datum_int( argc, PROC_STAT_ARGC, "Argc", "parsed cmdline count as if executed") +vmon_datum_str_array( argv, PROC_STAT_ARGV, "Argv", "parsed cmdline argv contents as if executed, pointers into cmdline") + + /* /proc/$pid/exe */ +vmon_datum_char_array( exe, PROC_STAT_EXE, "ExePath", "/proc/$pid/exe symlink target") + + /* /proc/$pid/wchan */ +vmon_datum_char_array( wchan, PROC_STAT_WCHAN, "WChan", "/proc/$pid/wchan raw contents (address resolved)") + + /* /proc/$pid/stat */ +vmon_datum_int( pid, PROC_STAT_PID, "PID", "the process id") +vmon_omit_n( (*store)->comm.len + 3, PROC_STAT_COMM_, "the filename of the executable, in parentheses, skipped") +vmon_datum_char( state, PROC_STAT_STATE, "State", "process state, one of \"RSDZTW\"") +vmon_omit_run( ' ', PROC_STAT_PPID_SP) +vmon_datum_longlong( ppid, PROC_STAT_PPID, "PPId", "parent pid") +vmon_omit_run( ' ', PROC_STAT_PGID_SP) +vmon_datum_longlong( pgrp, PROC_STAT_PGID, "PGId", "parent process group") +vmon_omit_run( ' ', PROC_STAT_SID_SP) +vmon_datum_longlong( sid, PROC_STAT_SID, "SessionId", "session id") +vmon_omit_run( ' ', PROC_STAT_TTY_NR_SP) +vmon_datum_longlong( tty_nr, PROC_STAT_TTY_NR, "Tty", "controlling terminal of the process") +vmon_omit_run( ' ', PROC_STAT_TPGID_SP) +vmon_datum_longlong( tpgid, PROC_STAT_TPGID, "CtrlPGid", "id of the foreground process group of the controlling terminal of the process") +vmon_omit_run( ' ', PROC_STAT_FLAGS_SP) +vmon_datum_ulonglong( flags, PROC_STAT_FLAGS, "Flags", "the kernel flags of the process (see PF_* in the non-uapi )") +vmon_omit_run( ' ', PROC_STAT_MINFLT_SP) +vmon_datum_ulonglong( minflt, PROC_STAT_MINFLT, "MnrFlts", "the number of minor faults (no hitting disk)") +vmon_omit_run( ' ', PROC_STAT_CMINFLT_SP) +vmon_datum_ulonglong( cminflt, PROC_STAT_CMINFLT, "ChldMnrFlts", "number of minor faults waited-for children have made") +vmon_omit_run( ' ', PROC_STAT_MAJFLT_SP) +vmon_datum_ulonglong( majflt, PROC_STAT_MAJFLT, "MjrFlts", "the number of major faults (hit disk)") +vmon_omit_run( ' ', PROC_STAT_CMAJFLT_SP) +vmon_datum_ulonglong( cmajflt, PROC_STAT_CMAJFLT, "ChldMjrFlts", "the number of major faults waited-for children have made") +vmon_omit_run( ' ', PROC_STAT_UTIME_SP) +vmon_datum_ulonglong( utime, PROC_STAT_UTIME, "UsrCPU", "amount of time this process has spent in user mode (ticks)") +vmon_omit_run( ' ', PROC_STAT_STIME_SP) +vmon_datum_ulonglong( stime, PROC_STAT_STIME, "SysCPU", "amount of time this process has spent in kernel mode (ticks)") +vmon_omit_run( ' ', PROC_STAT_CUTIME_SP) +vmon_datum_longlong( cutime, PROC_STAT_CUTIME, "ChldUsrCPU", "amount of time the waited-for children have spent in user mode (ticks)") +vmon_omit_run( ' ', PROC_STAT_CSTIME_SP) +vmon_datum_longlong( cstime, PROC_STAT_CSTIME, "ChldSysCPU", "amount of time the waited-for children have spent in kernel mode (ticks)") +vmon_omit_run( ' ', PROC_STAT_PRIORITY_SP) +vmon_datum_longlong( priority, PROC_STAT_PRIORITY, "Priority", "priority of the process") +vmon_omit_run( ' ', PROC_STAT_NICE_SP) +vmon_datum_longlong( nice, PROC_STAT_NICE, "Nice", "nice value") +vmon_omit_run( ' ', PROC_STAT_NUM_THREADS_SP) +vmon_datum_longlong( num_threads, PROC_STAT_NUM_THREADS, "NumThreads", "number of threads") +vmon_omit_run( ' ', PROC_STAT_ALARM_SP) +vmon_omit_ulonglong( itrealvalue, PROC_STAT_ALARM, "NextAlarm", "the time in jiffies before the next SIGALRM is sent (not maintained)") +vmon_omit_run( ' ', PROC_STAT_START_SP) +vmon_datum_ulonglong( start, PROC_STAT_START, "StartTime", "start time relative to system boot in jiffies") +vmon_omit_run( ' ', PROC_STAT_VSIZE_SP) +vmon_datum_ulonglong( vsize, PROC_STAT_VSIZE, "VirtSize", "virtual memory size (bytes)") +vmon_omit_run( ' ', PROC_STAT_RSS_SP) +vmon_datum_ulonglong( rss, PROC_STAT_RSS, "ResSize", "resident set size (bytes)") +vmon_omit_run( ' ', PROC_STAT_RSSLIM_SP) +vmon_datum_ulonglong( rsslim, PROC_STAT_RSSLIM, "ResSizeLimit", "resident set size ulimit") +vmon_omit_run( ' ', PROC_STAT_STARTCODE_SP) +vmon_omit_ulonglong( startcode, PROC_STAT_STARTCODE, "CodeStart", "address above which program text can run") +vmon_omit_run( ' ', PROC_STAT_ENDCODE_SP) +vmon_omit_ulonglong( endcode, PROC_STAT_ENDCODE, "CodeEnd", "address below which program text can run") +vmon_omit_run( ' ', PROC_STAT_STARTSTACK_SP) +vmon_omit_ulonglong( startstack, PROC_STAT_STARTSTACK, "StackStart", "address of the stack start") +vmon_omit_run( ' ', PROC_STAT_ESP_SP) +vmon_omit_ulonglong( kstkesp, PROC_STAT_ESP, "StackPtr", "current stack pointer") +vmon_omit_run( ' ', PROC_STAT_EIP_SP) +vmon_omit_ulonglong( kstkeip, PROC_STAT_EIP, "InstructnPtr", "current instruction pointer") +vmon_omit_run( ' ', PROC_STAT_SIGNAL_SP) +vmon_omit_ulonglong( signal, PROC_STAT_SIGNAL, "SigsPending", "bitmap of pending signals") +vmon_omit_run( ' ', PROC_STAT_SIGBLOCKED_SP) +vmon_omit_ulonglong( blocked, PROC_STAT_SIGBLOCKED, "SigsBlocked", "bitmap of blocked signals") +vmon_omit_run( ' ', PROC_STAT_SIGIGNORED_SP) +vmon_omit_ulonglong( ignored, PROC_STAT_SIGIGNORED, "SigsIgnored", "bitmap of ignored signals") +vmon_omit_run( ' ', PROC_STAT_SIGCAUGHT_SP) +vmon_omit_ulonglong( caught, PROC_STAT_SIGCAUGHT, "SigsCaught", "bitmap of caughtsignals") +vmon_omit_run( ' ', PROC_STAT_WCHAN_ADDR_SP) +vmon_datum_ulonglong( wchan_addr, PROC_STAT_WCHAN_ADDR, "WchanAddr", "address of the process' wchan") +vmon_omit_run( ' ', PROC_STAT_SWAPPED_SP) +vmon_omit_ulonglong( nswap, PROC_STAT_SWAPPED, "NumSwapped", "number of pages swapped (not maintained)") +vmon_omit_run( ' ', PROC_STAT_CSWAPPED_SP) +vmon_omit_ulonglong( cnswap, PROC_STAT_CSWAPPED, "ChldNumSwpd", "number of cumulative pages swapped for children (not maintained)") +vmon_omit_run( ' ', PROC_STAT_EXITSIGNAL_SP) +vmon_omit_longlong( exit_signal, PROC_STAT_EXITSIGNAL, "ExitSignal", "signal to be sent to parent when we die") +vmon_omit_run( ' ', PROC_STAT_PROCESSOR_SP) +vmon_datum_longlong( processor, PROC_STAT_PROCESSOR, "LastCPU", "CPU number last executed on") +vmon_omit_run( ' ', PROC_STAT_RT_PRIORITY_SP) +vmon_omit_ulonglong( rt_priority, PROC_STAT_RT_PRIORITY, "RTPriority", "realtime priority of the process") +vmon_omit_run( ' ', PROC_STAT_POLICY_SP) +vmon_omit_ulonglong( policy, PROC_STAT_POLICY, "SchedPolicy", "scheduling policy of the process") +vmon_omit_run( ' ', PROC_STAT_DELAY_BLKIO_SP) +vmon_datum_ulonglong( delay_blkio, PROC_STAT_DELAY_BLKIO, "BlkIODelays", "aggregated block IO delays, in ticks") +vmon_omit_run( ' ', PROC_STAT_GUEST_TIME_SP) +vmon_datum_ulonglong( guest_time, PROC_STAT_GUEST_TIME, "GuestTime", "time spent running a virtual cpu for a guest OS") +vmon_omit_run( ' ', PROC_STAT_CGUEST_TIME_SP) +vmon_datum_longlong( cguest_time, PROC_STAT_CGUEST_TIME, "ChldGuestTim", "time spent running a virtual cpu for a guest OS in (waited for?) children") + +#include "_end.def" -- cgit v1.2.3