From: Paul J. <pj...@en...> - 2001-12-22 07:02:02
|
I have just posted on SourceForge LSE a new version of the Design Note: Process Scheduling and Memory Placement This note is available at: https://sourceforge.net/docman/display_doc.php?docid=8463&group_id=8875 This note proposes a Linux kernel change called "CpuMemSets". CpuMemSets are intended to provide a single, underlying, general purpose kernel mechanism in support of various static scheduling and memory placement API's such as dplace, runon and cpusets. This is the fifth version of the CpuMemSets Design Note released to SourceForge LSE. Changes since the version of November 14 include: 1.Added CMS_EARLY_BIRD policy 2.Rename getcmscpu() to cmsGetCpu(), to match other names 3.Recommend init's CMS, not kernels, if want "generic default system CMS" 4.Reverse order of last two cmsQueryCMSByPid arguments - should have the OUPUT argument , *cms, last. 5.Similarly reverse order of last two cmsBulkRemap arguments, and change cms_vector_remap argument to a pointer thereto. 6.cpumemmaps don't have holes, and are not one-to-one (injective). 7.Change to always use CpuMemSets (mixed case) for the name of the overall design, and cpumemsets (lower case) along with cpumemmaps for the two layers of the implementation. 8.Explain that cpumemmaps don't have holes -- all application cpu and memory numbers in some range starting at zero are valid. 9.Reword explanation that CpuMemSets is focused on support of other libraries more than on end use applications. 10.Note what's missing in current design: topology, grouping and dynamic scheduling. 11.Change to specify initial kernel cpumemset is sorted, via architecture specific hook, and remove section discussing the problems with not initializing the kernel cpumemmap and cpumemset intelligently prior to init(1M) running. 12.More explanation of Bulk Remap feature. 13.Remove MASTER/DROPMASTER feature (for now anyway). 14.Change license of embedded header file from GPL to Library GPL. 15.Add ESRCH errno if specified pid does not exist. 16.Add zero pid to mean current process; remove *byPid() calls. 17.Further specify what it means to pass a cpumemset cpus list of zero length (it causes the *child* cpus value to be used). 18.Adjust typedef struct names to have _t suffix. 19.Remove cms_mappol_t, CMS_MASTER, CMS_DROPMASTER and memory list policy. 20.Added tasks and vm areas to list of primitive notions. I won't rest till it's the best ... Manager, Linux Scalability Paul Jackson <pj...@sg...> 1.650.933.1373 |