Thanks @bhroam. I updated the document replacing "vntype attribute" with "vntype resource".
The cpuset subsystem in cgroups is the very same thing that used to be referred to simply as cpusets. SGI provided a library that could be used to manipulate them, but that was more for convenience than anything else. Manually creating the directories and populating the files achieves the same result. The default location of the cpuset filesystem has changed over time, and a prefix is now applied to some of the files by default. It is possible to mount the cpuset filesystem with the "noprefix" flag to restore backward compatibility.
If we set a cgroup limit of 1GB for mem and don't set the memsw limit, then the kernel will allow the processes to allocate 1GB of RAM and unlimited swap. If we set a limit of 1GB for both mem and memsw, the kernel will allow the processes to access exactly 1GB of memory, regardless of whether it's in RAM or swap. If we set a cgroup limit of 1GB for mem and 2GB for memsw, the kernel will allow the processes to allocate up to 2GB with no more than 1GB being RAM. Finally, if we set a cgroup limit of 2GB for mem and 1GB for memsw, the kernel will only allow the processes to access 1GB. In terms of a PBS Pro job, if you set your vmem limit lower than your mem limit you've made a mistake and the cgroups hook will reject the job. When a user submits a job specifying -lselect=1:mem=1gb we don't want to grant them access to unlimited swap, but we do want them to have access to the full 1GB they requested, so memsw is set to the same as mem. Hopefully, that description helps.
I'll add interfaces for relevant log messages.