From the man page of
Number of kilobytes the task has caused to be read from disk per second. This defines how many kB has the process read per second. You can identify how many kB is being read by the process. More active the process reading large or several files in your disk, the higher the value.
Number of kilobytes the task has caused, or shall cause to be written to disk per second. This defines how many kB has the process wrote per second. You can identify how many kB is being wrote by the process. More active the process writing large or several files in your disk, the higher the value.
Number of kilobytes whose writing to disk has been cancelled by the task. This may occur when the task truncates some dirty pagecache. In this case, some IO which another task has been accounted for will not be happening. Self explanatory.
Virtual Size: The virtual memory usage of entire task in kilobytes. Depending of the program, this value may be high or low. Process are allocated virtual memory while running. More info about Virtual Memory
Resident Set Size: The non-swapped physical memory used by the task in kilobytes. Amount of physical memory (RAM) used.
Total number of voluntary context switches the task made per second. A voluntary context switch occurs when a task blocks because it requires a resource that is unavailable. Or said in other terms, the system had no resources available when the process asked for them (can be I/O, Memory, CPU, etc.)
Total number of non voluntary context switches the task made per second. A involuntary context switch takes place when a task executes for the duration of its time slice and then is forced to relinquish the processor. Same as above, just that the process was forced to stop it's execution while running. Ex.: This can happens when a process with higher priority starts nagging for resources while normal priority ones are running.
I didn't found any specific information about 'Memory' like previous values, but the
-r switch shows "page faults and memory utilization". None of the values should be in negative (at least not as they are defined).
pidstat is extremely useful, when you like to monitor the behavior of different process in an specific time and condition (like a snapshot), but for continuous monitoring other tools like
top are more advisable.
The pidstat man page.