This content has been marked as final. Show 1 reply
reading several books I was able to deduce that indeed LWP are swapped out. But the are not very explicit and clear. At least I took a look to the source code of sched.c (swapper) and I can confirm that swapper swaps LWP (its structures only, which its not to much). When all LWPs of a process are swapped out then swaper unload addres space (all private memory of the process, shared but all LWPs). At this time is when you can say the process is swapped out and you have obtained a really important feed of memory.
You can observe of all this with mdb and ps/pmap in a system swapping:
# Process name, PID, number of LWPs, number of LWPs swapped out and LWPid of one of the swapped out:
echo "::walk thread thr |::print kthread_t t_schedflag|::grep .==0 |::eval <thr=K|::print -d kthread_t t_procp->p_user.u_comm t_procp->p_pidp->pid_id t_procp->p_lwpcnt t_procp->p_swapcnt t_tid" | mdb -k
# Memory of the process in RAM (RSS) and swap disk
ps -ef_o pid,lwp,nlwp,pcpu,pmem,rss="---RSS----" -o vsz="-----VSZ-----" -o args| grep <PID_of processwith_swapped_out_LWPs>
pmap -x <PID_of swappedout_process>
Note that w column of vmstat shows LWPs swapped not process.