mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-13 09:15:02 +08:00
e9a83bd232
- A fair pile of RST conversions, many from Mauro. These create more than the usual number of simple but annoying merge conflicts with other trees, unfortunately. He has a lot more of these waiting on the wings that, I think, will go to you directly later on. - A new document on how to use merges and rebases in kernel repos, and one on Spectre vulnerabilities. - Various improvements to the build system, including automatic markup of function() references because some people, for reasons I will never understand, were of the opinion that :c:func:``function()`` is unattractive and not fun to type. - We now recommend using sphinx 1.7, but still support back to 1.4. - Lots of smaller improvements, warning fixes, typo fixes, etc. -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEIw+MvkEiF49krdp9F0NaE2wMflgFAl0krAEPHGNvcmJldEBs d24ubmV0AAoJEBdDWhNsDH5Yg98H/AuLqO9LpOgUjF4LhyjxGPdzJkY9RExSJ7km gznyreLCZgFaJR+AY6YDsd4Jw6OJlPbu1YM/Qo3C3WrZVFVhgL/s2ebvBgCo50A8 raAFd8jTf4/mGCHnAqRotAPQ3mETJUk315B66lBJ6Oc+YdpRhwXWq8ZW2bJxInFF 3HDvoFgMf0KhLuMHUkkL0u3fxH1iA+KvDu8diPbJYFjOdOWENz/CV8wqdVkXRSEW DJxIq89h/7d+hIG3d1I7Nw+gibGsAdjSjKv4eRKauZs4Aoxd1Gpl62z0JNk6aT3m dtq4joLdwScydonXROD/Twn2jsu4xYTrPwVzChomElMowW/ZBBY= =D0eO -----END PGP SIGNATURE----- Merge tag 'docs-5.3' of git://git.lwn.net/linux Pull Documentation updates from Jonathan Corbet: "It's been a relatively busy cycle for docs: - A fair pile of RST conversions, many from Mauro. These create more than the usual number of simple but annoying merge conflicts with other trees, unfortunately. He has a lot more of these waiting on the wings that, I think, will go to you directly later on. - A new document on how to use merges and rebases in kernel repos, and one on Spectre vulnerabilities. - Various improvements to the build system, including automatic markup of function() references because some people, for reasons I will never understand, were of the opinion that :c:func:``function()`` is unattractive and not fun to type. - We now recommend using sphinx 1.7, but still support back to 1.4. - Lots of smaller improvements, warning fixes, typo fixes, etc" * tag 'docs-5.3' of git://git.lwn.net/linux: (129 commits) docs: automarkup.py: ignore exceptions when seeking for xrefs docs: Move binderfs to admin-guide Disable Sphinx SmartyPants in HTML output doc: RCU callback locks need only _bh, not necessarily _irq docs: format kernel-parameters -- as code Doc : doc-guide : Fix a typo platform: x86: get rid of a non-existent document Add the RCU docs to the core-api manual Documentation: RCU: Add TOC tree hooks Documentation: RCU: Rename txt files to rst Documentation: RCU: Convert RCU UP systems to reST Documentation: RCU: Convert RCU linked list to reST Documentation: RCU: Convert RCU basic concepts to reST docs: filesystems: Remove uneeded .rst extension on toctables scripts/sphinx-pre-install: fix out-of-tree build docs: zh_CN: submitting-drivers.rst: Remove a duplicated Documentation/ Documentation: PGP: update for newer HW devices Documentation: Add section about CPU vulnerabilities for Spectre Documentation: platform: Delete x86-laptop-drivers.txt docs: Note that :c:func: should no longer be used ...
79 lines
3.2 KiB
ReStructuredText
79 lines
3.2 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
=====================
|
|
Fake NUMA For CPUSets
|
|
=====================
|
|
|
|
:Author: David Rientjes <rientjes@cs.washington.edu>
|
|
|
|
Using numa=fake and CPUSets for Resource Management
|
|
|
|
This document describes how the numa=fake x86_64 command-line option can be used
|
|
in conjunction with cpusets for coarse memory management. Using this feature,
|
|
you can create fake NUMA nodes that represent contiguous chunks of memory and
|
|
assign them to cpusets and their attached tasks. This is a way of limiting the
|
|
amount of system memory that are available to a certain class of tasks.
|
|
|
|
For more information on the features of cpusets, see
|
|
Documentation/cgroup-v1/cpusets.rst.
|
|
There are a number of different configurations you can use for your needs. For
|
|
more information on the numa=fake command line option and its various ways of
|
|
configuring fake nodes, see Documentation/x86/x86_64/boot-options.rst.
|
|
|
|
For the purposes of this introduction, we'll assume a very primitive NUMA
|
|
emulation setup of "numa=fake=4*512,". This will split our system memory into
|
|
four equal chunks of 512M each that we can now use to assign to cpusets. As
|
|
you become more familiar with using this combination for resource control,
|
|
you'll determine a better setup to minimize the number of nodes you have to deal
|
|
with.
|
|
|
|
A machine may be split as follows with "numa=fake=4*512," as reported by dmesg::
|
|
|
|
Faking node 0 at 0000000000000000-0000000020000000 (512MB)
|
|
Faking node 1 at 0000000020000000-0000000040000000 (512MB)
|
|
Faking node 2 at 0000000040000000-0000000060000000 (512MB)
|
|
Faking node 3 at 0000000060000000-0000000080000000 (512MB)
|
|
...
|
|
On node 0 totalpages: 130975
|
|
On node 1 totalpages: 131072
|
|
On node 2 totalpages: 131072
|
|
On node 3 totalpages: 131072
|
|
|
|
Now following the instructions for mounting the cpusets filesystem from
|
|
Documentation/cgroup-v1/cpusets.rst, you can assign fake nodes (i.e. contiguous memory
|
|
address spaces) to individual cpusets::
|
|
|
|
[root@xroads /]# mkdir exampleset
|
|
[root@xroads /]# mount -t cpuset none exampleset
|
|
[root@xroads /]# mkdir exampleset/ddset
|
|
[root@xroads /]# cd exampleset/ddset
|
|
[root@xroads /exampleset/ddset]# echo 0-1 > cpus
|
|
[root@xroads /exampleset/ddset]# echo 0-1 > mems
|
|
|
|
Now this cpuset, 'ddset', will only allowed access to fake nodes 0 and 1 for
|
|
memory allocations (1G).
|
|
|
|
You can now assign tasks to these cpusets to limit the memory resources
|
|
available to them according to the fake nodes assigned as mems::
|
|
|
|
[root@xroads /exampleset/ddset]# echo $$ > tasks
|
|
[root@xroads /exampleset/ddset]# dd if=/dev/zero of=tmp bs=1024 count=1G
|
|
[1] 13425
|
|
|
|
Notice the difference between the system memory usage as reported by
|
|
/proc/meminfo between the restricted cpuset case above and the unrestricted
|
|
case (i.e. running the same 'dd' command without assigning it to a fake NUMA
|
|
cpuset):
|
|
|
|
======== ============ ==========
|
|
Name Unrestricted Restricted
|
|
======== ============ ==========
|
|
MemTotal 3091900 kB 3091900 kB
|
|
MemFree 42113 kB 1513236 kB
|
|
======== ============ ==========
|
|
|
|
This allows for coarse memory management for the tasks you assign to particular
|
|
cpusets. Since cpusets can form a hierarchy, you can create some pretty
|
|
interesting combinations of use-cases for various classes of tasks for your
|
|
memory management needs.
|