Many of Sage's parallel functions allow you to specify the number of CPUs by hand. If you do that, does Sage use your entire cluster? If not, then I would recommend solving that problem first. Most of Sage's parallel funcitonality uses Python's os.fork (see the documentation of sage.parallel.use_fork.p_iter_fork).
If you use os.fork in plain Python, does everything work as expected?
If the problem really is just with the output of ncpus, you can work around it for now by simply giving the number of cpus explicitly and work on patching ncpus.py to correctly identify the number of cpus.