numa

NUMA(7)         Ð ÑководÑÑво пÑогÑаммиÑÑа Linux         NUMA(7)



ÐÐЯ
       numa - Ð¾Ð±Ð·Ð¾Ñ Ð°ÑÑиÑекÑÑÑÑ Ñ Ð½ÐµÑавномеÑной памÑÑÑÑ
       (Non-Uniform Memory Architecture)

ÐÐÐСÐÐÐÐ
       ÐеÑавномеÑнÑй доÑÑÑп к памÑÑи (NUMA) пÑипиÑÑваÑÑ
       микÑопÑоÑеÑÑоÑнÑм ÑиÑÑемам, Ñ ÐºÐ¾ÑоÑÑÑ Ð¿Ð°Ð¼ÑÑÑ
       ÑазделÑеÑÑÑ Ð½Ð° ÑзлÑ. ÐÑÐµÐ¼Ñ Ð´Ð¾ÑÑÑпа к ÑÐ·Ð»Ñ Ð¿Ð°Ð¼ÑÑи
       завиÑÐ¸Ñ Ð¾Ñ Ð¾ÑноÑиÑелÑного ÑаÑположениÑ
       обÑаÑаÑÑегоÑÑ Ð¦Ð Ðº ÑÐ·Ð»Ñ (в ÑÑом оÑлиÑие оÑ
       ÑиммеÑÑиÑнÑÑ Ð¼ÑлÑÑипÑоÑеÑÑоÑнÑÑ ÑиÑÑем, в коÑоÑÑÑ
       вÑÐµÐ¼Ñ Ð´Ð¾ÑÑÑпа ко вÑей памÑÑи одинаково длÑ
       вÑÐµÑ Ð¦Ð). ÐбÑÑно, каждÑй ЦРв ÑиÑÑеме NUMA имееÑ
       Ñвой локалÑнÑй Ñзел памÑÑи, ÑÑÑ ÑодеÑжимое
       можно полÑÑиÑÑ Ð±ÑÑÑÑее, Ñем из памÑÑи
       локалÑного Ñзла дÑÑгого ЦРили из памÑÑи
       ÑинÑ, коÑоÑÐ°Ñ Ð´Ð¾ÑÑÑпна Ð´Ð»Ñ Ð²ÑÐµÑ Ð¦Ð.

   СиÑÑемнÑе вÑÐ·Ð¾Ð²Ñ NUMA
       Ð ÑдÑе Linux ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ ÑледÑÑÑие ÑиÑÑемнÑе
       вÑзовÑ, оÑноÑÑÑиеÑÑ Ðº NUMA: get_mempolicy(2), mbind(2),
       migrate_pages(2), move_pages(2) и set_mempolicy(2). Ðднако,
       пÑиложениÑ, обÑÑно, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑ
       инÑеÑÑейÑ, пÑедоÑÑавлÑемÑй библиоÑекой
       libnuma; ÑмоÑÑиÑе «ÐоддеÑжка в библиоÑекаÑ»
       далее.

   /proc/[ÑиÑло]/numa_maps (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.14)
       Ð ÑÑом Ñайле ÑодеÑжиÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ полиÑике
       и вÑделении памÑÑи NUMA Ð´Ð»Ñ Ð¿ÑоÑеÑÑа.

       Ркаждой ÑÑÑоке ÑодеÑжиÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð±Ð»Ð°ÑÑи
       памÑÑи, иÑполÑзÑемом пÑоÑеÑÑом, оÑÑажаÑÑей,
       помимо пÑоÑего, пÑименÑемÑÑ Ð¿Ð¾Ð»Ð¸ÑÐ¸ÐºÑ Ð¿Ð°Ð¼ÑÑи
       Ð´Ð»Ñ ÑÑой облаÑÑи и какие ÑÑÑаниÑнÑе ÑÐ·Ð»Ñ Ð±Ñли
       вÑделенÑ.

       Файл numa_maps доÑÑÑпен ÑолÑко на ÑÑение. ÐÑи
       ÑÑении /proc/<pid>/numa_maps ÑдÑо ÑканиÑÑеÑ
       виÑÑÑалÑное адÑеÑное пÑоÑÑÑанÑÑво пÑоÑеÑÑа и
       вÑдаÑÑ ÐºÐ°Ðº иÑполÑзÑеÑÑÑ Ð¿Ð°Ð¼ÑÑÑ. Ðдна ÑÑÑока
       ÑооÑвеÑÑÑвÑÐµÑ ÑникалÑной облаÑÑи памÑÑи
       пÑоÑеÑÑа.

       РпеÑвом поле каждой ÑÑÑоки ÑодеÑжиÑÑÑ
       наÑалÑнÑй адÑÐµÑ Ð¾Ð±Ð»Ð°ÑÑи памÑÑи. ÐÑо поле
       позволÑÐµÑ Ð¿ÑовеÑÑи паÑÐ°Ð»Ð»ÐµÐ»Ñ Ñ Ñайлом
       /proc/<pid>/maps, в коÑоÑом ÑодеÑжиÑÑÑ ÐºÐ¾Ð½ÐµÑнÑй
       адÑÐµÑ Ð¾Ð±Ð»Ð°ÑÑи и дÑÑÐ³Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ, ÑÐ°ÐºÐ°Ñ ÐºÐ°Ðº
       пÑава доÑÑÑпа и даннÑе о ÑовмеÑÑном
       иÑполÑзовании.

       Ðо вÑоÑом поле показана полиÑика памÑÑи,
       коÑоÑÐ°Ñ Ð¿Ñименена к облаÑÑи в наÑÑоÑÑее
       вÑемÑ. ÐамеÑим, ÑÑо пÑименÑÐ½Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñика
       необÑзаÑелÑно ÑвлÑеÑÑÑ Ð¿Ð¾Ð»Ð¸Ñикой,
       ÑÑÑановленной пÑоÑеÑÑом Ð´Ð»Ñ ÑÑой облаÑÑи
       памÑÑи. Ð ÑаÑÑноÑÑи, еÑли Ð´Ð»Ñ ÑÑой облаÑÑи
       пÑоÑеÑÑ ÑÑÑановил полиÑÐ¸ÐºÑ Â«default» (по
       ÑмолÑаниÑ), Ñо пÑименÑÐµÐ¼Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñика Ð´Ð»Ñ ÑÑой
       облаÑÑи бÑÐ´ÐµÑ Ð¿Ð¾Ð»Ð¸Ñикой пÑоÑеÑÑа, коÑоÑаÑ
       Ð¼Ð¾Ð¶ÐµÑ ÑовпадаÑÑ, а Ð¼Ð¾Ð¶ÐµÑ Ð¸ не ÑовпадаÑÑ Ñ
       «default».

       РоÑÑавÑейÑÑ ÑаÑÑи ÑÑÑоки ÑодеÑжиÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾
       ÑÑÑаниÑаÑ, вÑделеннÑÑ Ð² облаÑÑи памÑÑи:

       N<Ñзел>=<кол-во_ÑÑÑаниÑ>
              ÐолиÑеÑÑво ÑÑÑаниÑ, вÑделеннÑÑ Ð½Ð° <Ñзле>. Ð
              <кол-во_ÑÑÑаниÑ> ÑÑиÑÑваÑÑÑÑ ÑолÑко ÑÑÑаниÑÑ,
              оÑобÑажÑннÑе пÑоÑеÑÑом в наÑÑоÑÑий
              моменÑ. ÐеÑемеÑение (migration) ÑÑÑÐ°Ð½Ð¸Ñ Ð¸
              возвÑаÑение памÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиводиÑÑ Ðº
              вÑÐµÐ¼ÐµÐ½Ð½Ð¾Ð¼Ñ Ð½ÐµÐ¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑÑÑаниÑ,
              ÑвÑзаннÑÑ Ñ ÑÑой облаÑÑÑÑ Ð¿Ð°Ð¼ÑÑи. Такие
              ÑÑÑаниÑÑ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÑвиÑÑÑÑ Ñнова ÑолÑко
              поÑле Ñого, как пÑоÑеÑÑ Ð¿Ð¾Ð¿ÑÑаеÑÑÑ
              обÑаÑиÑÑÑÑ Ðº ним. ÐÑли облаÑÑÑ Ð¿Ð°Ð¼ÑÑи
              ÑÑиÑаеÑÑÑ Ð¾Ð±Ñей или ÑвлÑеÑÑÑ Ð¾ÑобÑажением
              Ñайла, Ñо Ð´Ð»Ñ Ð´ÑÑÐ³Ð¸Ñ Ð¿ÑоÑеÑÑов в ÑÑо же
              вÑÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ
              дополниÑелÑнÑе ÑÑÑаниÑÑ, оÑобÑажÑннÑе в
              ÑооÑвеÑÑÑвÑÑÑее адÑеÑное пÑоÑÑÑанÑÑво.

       file=<имÑ_Ñайла>
              Файл, оÑобÑажаемÑй в облаÑÑÑ Ð¿Ð°Ð¼ÑÑи.
              ÐÑли Ñайл оÑобÑажÑн как закÑÑÑÑй (private),
              попÑÑка запиÑи Ð¼Ð¾Ð¶ÐµÑ ÑгенеÑиÑоваÑÑ
              ÑÑÑаниÑÑ COW (копиÑование пÑи запиÑи) в
              ÑÑой облаÑÑи памÑÑи. ÐÑи ÑÑÑаниÑÑ
              показÑваÑÑÑÑ ÐºÐ°Ðº анонимнÑе.

       heap   ÐблаÑÑÑ Ð¿Ð°Ð¼ÑÑи, иÑполÑзÑÐµÐ¼Ð°Ñ Ð¿Ð¾Ð´ кÑÑÑ.

       stack  ÐблаÑÑÑ Ð¿Ð°Ð¼ÑÑи, иÑполÑзÑÐµÐ¼Ð°Ñ Ð¿Ð¾Ð´ ÑÑек.

       huge   ÐблаÑÑÑ Ð¾Ð³Ñомной памÑÑи. ÐоказÑваеÑ
              колиÑеÑÑво огÑомнÑÑ ÑÑÑаниÑ, а не ÑÑÑаниÑ
              обÑÑного ÑазмеÑа.

       anon=<ÑÑÑаниÑ>
              ÐолиÑеÑÑво анонимнÑÑ ÑÑÑÐ°Ð½Ð¸Ñ Ð² облаÑÑи.

       dirty=<ÑÑÑаниÑ>
              ÐолиÑеÑÑво гÑÑзнÑÑ (dirty) ÑÑÑаниÑ.

       mapped=<ÑÑÑаниÑ>
              ÐбÑее колиÑеÑÑво оÑобÑажÑннÑÑ ÑÑÑаниÑ,
              еÑли оно оÑлиÑаеÑÑÑ Ð¾Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑва ÑÑÑаниÑ
              dirty и anon.

       mapmax=<колиÑеÑÑво>
              ÐакÑималÑнÑй mapcount (колиÑеÑÑво пÑоÑеÑÑов,
              оÑобÑажаÑÑÐ¸Ñ Ð¾Ð´Ð½Ñ ÑÑÑаниÑÑ) обнаÑÑженнÑй
              пÑи ÑканиÑовании. ÐÐ¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ
              как индикаÑÐ¾Ñ ÑÑепени ÑовмеÑÑного
              иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ облаÑÑи
              памÑÑи.

       swapcache=<колиÑеÑÑво>
              ÐолиÑеÑÑво ÑÑÑаниÑ, ÑвÑзаннÑÑ Ñ ÑÑаÑÑками
              на ÑÑÑÑойÑÑве подкаÑки.

       active=<ÑÑÑаниÑ>
              ÐолиÑеÑÑво ÑÑÑÐ°Ð½Ð¸Ñ Ð² акÑивном ÑпиÑке. ÐÑо
              поле показÑваеÑÑÑ ÑолÑко, еÑли его
              знаÑение оÑлиÑаеÑÑÑ Ð¾Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑва ÑÑÑаниÑ
              в ÑÑой облаÑÑи. ÐÑо ознаÑаеÑ, ÑÑо в
              облаÑÑи памÑÑи ÑÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко
              неакÑивнÑÑ ÑÑÑаниÑ, коÑоÑÑе могÑÑ Ð±ÑÑÑ
              ÑкоÑо ÑÐ´Ð°Ð»ÐµÐ½Ñ swapper.

       writeback=<ÑÑÑаниÑ>
              ÐолиÑеÑÑво ÑÑÑаниÑ, коÑоÑÑе в наÑÑоÑÑий
              Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð½Ð° диÑк.

СÐÐТÐÐТСТÐÐРСТÐÐÐÐРТÐÐ
       ÐнÑеÑÑейÑÑ NUMA не опиÑÐ°Ð½Ñ Ð² ÑÑандаÑÑаÑ.

ÐÐÐÐЧÐÐÐЯ
       СиÑÑемнÑе вÑÐ·Ð¾Ð²Ñ Linux NUMA и инÑеÑÑÐµÐ¹Ñ /proc
       доÑÑÑÐ¿Ð½Ñ ÑолÑко, еÑли ÑдÑо бÑло ÑобÑано в
       вклÑÑÑннÑм паÑамеÑÑом CONFIG_NUMA.

   ÐоддеÑжка в библиоÑекаÑ
       ÐÑполнÑйÑе ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÑ Ñ -lnuma. ÐиблиоÑека
       libnuma и ÑÑебÑемÑй заголовоÑнÑй Ñайл <numaif.h>
       доÑÑÑÐ¿Ð½Ñ Ð² пакеÑе numactl.

       Ðднако, пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑ
       ÑÑи ÑиÑÑемнÑе вÑÐ·Ð¾Ð²Ñ Ð½Ð°Ð¿ÑÑмÑÑ. ÐмеÑÑо ÑÑого,
       ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ð½ÑеÑÑейÑ
       вÑÑокого ÑÑовнÑ, пÑедоÑÑавлÑемÑй ÑÑнкÑиÑми
       numa(3) из пакеÑа numactl. ÐÐ°ÐºÐµÑ numactl доÑÑÑпен по
       адÑеÑÑ ⟨ftp://oss.sgi.com/www/projects/libnuma/download/⟩.  ÐакеÑ
       Ñакже вклÑÑÑн в некоÑоÑÑе диÑÑÑибÑÑÐ¸Ð²Ñ Linux.
       ÐекоÑоÑÑе диÑÑÑибÑÑÐ¸Ð²Ñ Ð¿Ð¾Ð¼ÐµÑаÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑекÑ
       Ð´Ð»Ñ ÑазÑабоÑки и заголовоÑнÑе ÑÐ°Ð¹Ð»Ñ Ð² пакеÑ
       numactl-devel.

СÐÐТРÐТРТÐÐÐÐ
       get_mempolicy(2), mbind(2), move_pages(2), set_mempolicy(2), numa(3),
       cpuset(7), numactl(8)



Linux                             2012-08-05                           NUMA(7)