HWLOC-INFO(1) hwloc HWLOC-INFO(1)

hwloc-info - نمایش اطلاعاتی درباره اشیاء، یک توپولوژی یا ویژگی‌های پشتیبانی‌شده

hwloc-info [ گزینه‌ها ]... <شیء>...

hwloc-info [ گزینه‌ها ] root hwloc-info [ گزینه‌ها ] [ topology | levels | support ]

<شیء>... می‌تواند فهرستی از اشیاء هدف برای پرس‌وجو باشد که با فاصله از هم جدا شده‌اند. این برنامه تمام اطلاعات مربوط به یک شیء را پیش از بررسی شیء بعدی گزارش می‌کند:


$ hwloc-info core:2 package:1 pu:all
Core L#2
type = Core
...
Package L#1
...
PU L#0
...
PU L#1
...

این فهرست همچنین می‌تواند شامل کلیدواژه‌های ویژه‌ای باشد مانند:


root برای شیء ریشه توپولوژی.


levels برای اطلاعات درباره سطوح توپولوژی (پیش‌فرض در صورت عدم تعیین شیء هدف، معادل --topology).


topology برای ویژگی‌های اطلاعات توپولوژی ذخیره‌شده در شیء ریشه (جهت سازگاری رو به جلو با ویژگی‌های اطلاعات توپولوژی در hwloc 3.0)،
و همچنین تعداد سطوح (عمق)، واحدهای PU، گره‌های NUMANode و انواع پردازنده (CPU kinds).


support برای اطلاعات درباره ویژگی‌های پشتیبانی‌شده (معادل --support).

اهداف واقعی و کلیدواژه‌های ویژه می‌توانند با هم ترکیب شوند:


$ hwloc-info core:2 topology pu:3 levels

توجه داشته باشید که hwloc(7) توضیح مفصلی درباره سامانه hwloc و قالب‌های معتبر <شیء> ارائه می‌دهد؛ باید پیش از خواندن این صفحه راهنما مطالعه شود.

اطلاعات اشیاء مشخص‌شده را گزارش می‌کند. این حالت پیش‌فرض در صورت مشخص شدن اشیاء در خط فرمان است.
به جای اشیاء خاص، خلاصه‌ای از توپولوژی را گزارش می‌کند. این معادل ارسال levels به عنوان شیء هدف در خط فرمان است. این حالت پیش‌فرض در صورت عدم ارائه شیء در خط فرمان است.
ویژگی‌هایی را گزارش می‌کند که توسط hwloc روی این توپولوژی پشتیبانی می‌شوند. این ویژگی‌ها مواردی هستند که از طریق تابع hwloc_topology_get_support() در دسترس قرار دارند. این برای بررسی اینکه کدام گزینه‌های مقیدسازی پردازنده یا حافظه توسط نسخه نصب‌شده فعلی hwloc پشتیبانی می‌شوند مفید است. این معادل ارسال support به عنوان شیء هدف در خط فرمان است.
توپولوژی را از مسیر <path> می‌خواند به جای آنکه توپولوژی ماشین محلی را کشف کند.

اگر <path> یک پرونده باشد، می‌تواند یک پرونده XML باشد که قبلاً توسط برنامه‌ای از hwloc صادر شده است. اگر <path> برابر با "-" باشد، ورودی استاندارد می‌تواند به عنوان یک پرونده XML استفاده شود.

در لینوکس، <path> می‌تواند دایرکتوری حاوی پرونده‌های توپولوژی باشد که از ماشین دیگری با hwloc-gather-topology جمع‌آوری شده است.

در پلتفرم‌های x86، مسیر <path> می‌تواند دایرکتوری حاوی اطلاعات استخراج‌شده cpuid باشد که با hwloc-gather-cpuid جمع‌آوری شده است.

هنگامی که برنامه archivemount در دسترس باشد، <path> می‌تواند یک فایل آرشیو tar حاوی این‌گونه پرونده‌های توپولوژی لینوکس یا x86 باشد.

یک سلسله‌مراتب ساختگی را شبیه‌سازی می‌کند (به جای کشف توپولوژی روی ماشین محلی). اگر <specification> برابر با "node:2 pu:3" باشد، توپولوژی شامل دو گره NUMA خواهد بود که در هر یک ۳ واحد پردازش (PU) وجود دارد. رشته <specification> باید به تعدادی PU ختم شود.
قالب ورودی را اجباراً از میان xml، fsroot، cpuid و synthetic تعیین می‌کند.
جزئیات بیشتری را شامل می‌شود.
میزان جزئیات نمایشی را کاهش می‌دهد. برای هر شیء تنها یک سطر خلاصه نمایش داده می‌شود.
تنها ویژگی با نام <name> را برای هر شیء گزارش می‌کند (به جای تمام ویژگی‌ها). نام باید دقیقاً مطابق با آنچه معمولاً توسط برنامه گزارش می‌شود باشد، برای نمونه "complete cpuset" در "0.1: complete cpuset = %0x00ffff00".

تنها مقدار گزارش می‌شود و هرگونه پیشوند یا نام شیء دیگر نادیده گرفته می‌شود، به طوری که خروجی به آسانی توسط ابزارهای دیگر قابل استفاده باشد.

این گزینه روی اطلاعات توپولوژی نیز کار می‌کند اما برای کلیدواژه‌های levels و support نادیده گرفته می‌شود.

اطلاعات مربوط به شیء و همچنین تمام نیاکان آن را تا ریشه توپولوژی نمایش می‌دهد. این معادل --ancestor all است.
تنها نیاکان شیء را که با نوع داده‌شده مطابقت دارند نمایش می‌دهد.

برخی مقادیر ویژه که با چندین نوع مطابقت دارند نیز می‌توانند ارائه شوند: kind=normal (اشیاء CPU، شامل حافظه‌های نهان کش)، kind=cpu (اشیاء CPU، بدون کش‌ها)، kind=cache (تمام کش‌ها، شامل کش‌های سمت حافظه)، kind=memory (گره‌های NUMA یا کش‌های سمت حافظه)، kind=io (اشیاء ورودی/خروجی IO)، kind=all (تمام اشیاء). همچنین به Object Kind در بخش اصطلاحات و تعاریف مستندات مراجعه کنید. پیشوند kind= در صورت عدم وجود ابهام می‌تواند حذف شود.

اگر چندین نیا مطابقت داشته باشند، از عمیق‌ترین به بالاترین در توپولوژی گزارش می‌شوند. افزودن --first فقط نخستین مورد را نمایش می‌دهد.

اطلاعات مربوط به فرزندان شیء را نمایش می‌دهد.
اطلاعات نوادگان شیء را که با نوع داده‌شده مطابقت دارند نمایش می‌دهد.

برخی مقادیر ویژه که با چندین نوع مطابقت دارند نیز می‌توانند ارائه شوند: kind=normal (اشیاء CPU، شامل کش‌ها)، kind=cpu (اشیاء CPU، بدون کش‌ها)، kind=cache (تمام کش‌ها، شامل کش‌های سمت حافظه)، kind=memory (گره‌های NUMA یا کش‌های سمت حافظه)، kind=io (اشیاء ورودی/خروجی IO)، kind=all (تمام اشیاء). همچنین به Object Kind در بخش اصطلاحات و تعاریف مستندات مراجعه کنید. پیشوند kind= در صورت عدم وجود ابهام می‌تواند حذف شود.

اگر چندین شیء مطابقت داشته باشند، با پیمایش عمق-اول (depth-first) گزارش می‌شوند (فرزند نخست، سپس فرزندان آن و...، سپس فرزند دوم و...). افزودن --first فقط نخستین مورد را نمایش می‌دهد.

اطلاعات گره‌های NUMA را که محلیِ شیء مشخص‌شده هستند نمایش می‌دهد.
فلگ‌های مورد استفاده برای انتخاب گره‌های محلی NUMA را تغییر می‌دهد. فلگ‌ها می‌توانند به صورت مقادیر عددی یا فهرستی جداشده با کاما از نام فلگ‌ها ارسال شوند که به hwloc_get_local_numanode_objs() پاس داده می‌شوند. این نام‌ها تا زمانی که تطابق یکتایی داشته باشند می‌توانند زیررشته‌ای از نام واقعی فلگ باشند. پیش‌فرض 3 (یا smaller,larger) است که به این معناست که گره‌های NUMA نمایش داده می‌شوند اگر محلی‌سازی آن‌ها محلی‌سازی شیء ارائه‌شده را در بر گیرد یا در بر گرفته شود.

این گزینه --local-memory را فعال می‌کند.

فهرست کردن گره‌های حافظه محلی را با --local-memory فعال می‌کند، اما تنها گره‌های محلی را نمایش می‌دهد که بهترین مقدار را برای ویژگی حافظه مشخص‌شده با <name> (یا به صورت یک نمایه) دارند. اگر مقادیر ویژگی حافظه به آغازگر (initiator) وابسته باشد، شیء ارائه‌شده به hwloc-info به عنوان آغازگر در نظر گرفته می‌شود.

نام <name> می‌تواند پسوندی از فلگ‌ها برای تنظیم دقیق انتخاب بهترین گره‌ها داشته باشد، به عنوان نمونه bandwidth,strict,default.

فلگ default یعنی اگر بهترین گره پیدا نشد، گره‌های پیش‌فرض گزارش شوند (نگاه کنید به --default-nodes). اگر نه بهترین و نه گره‌های پیش‌فرض یافت نشوند، تمام گره‌های محلی گزارش می‌شوند.

فلگ strict یعنی گره‌ها تنها در صورتی انتخاب شوند که کارایی آن‌ها برای تمام CPUهای ورودی بهترین باشد. روی یک ماشین دو سوکته با HBM در هر سوکت، هر دو HBM برای سوکت محلی خود بهترین هستند، اما نه برای سوکت راه دور. بنابراین هر دو HBM به طور پیش‌فرض برای کل ماشین نیز بهترین در نظر گرفته می‌شوند، اما در صورت استفاده از strict هیچ‌کدام انتخاب نمی‌شوند.

اطلاعات گره‌های پیش‌فرض NUMA را که محلیِ شیء داده‌شده هستند نمایش می‌دهد. این معمولاً شامل گره‌های حافظه DRAM (یا گره‌های همان رده حافظه) است به جای گره‌هایی با ویژگی‌های خاص (مانند HBM، NVM، CXL و غیره). برای جزئیات بیشتر به ()hwloc_topology_get_default_nodeset مراجعه کنید.
برای هر شیء ورودی، تنها نخستین شیء خروجی منطبق را گزارش می‌کند (نخستین نیا، نخستین فرزند و...).
هنگام چاپ اطلاعات شیء، ابتدای هر سطر را با نمایه شیء مربوطه در ورودی پیشوند می‌زند. برای نمونه، اگر سه هسته در ورودی داده شده باشند، سطرهای خروجی با "0: "، "1: " یا "2: " پیشوند می‌خورند. اگر --ancestor نیز استفاده شود، پیشوند به صورت "X.Y: " خواهد بود که در آن X نمایه شیء مربوطه در ورودی، و Y نمایه والد است (۰ برای خود شیء، و به سمت ریشه توپولوژی افزایش می‌یابد).
اشیاء منع‌شده توسط محدودیت‌های مدیریتی را نیز شامل می‌شود.
توپولوژی را به مجموعه پردازنده‌های (cpuset) مشخص‌شده محدود می‌کند. این کار برخی واحدهای PU و والدینی که دیگر فرزندی ندارند را حذف می‌کند.

دقت داشته باشید که محدود کردن واحدهای PU در یک توپولوژی ممکن است نمایه‌های منطقی بسیاری از اشیاء، از جمله گره‌های NUMA را تغییر دهد.

توپولوژی را به مجموعه گره‌های (nodeset) مشخص‌شده محدود می‌کند (مگر اینکه --restrict-flags چیز دیگری تعیین کند). این کار برخی گره‌های NUMA و والدینی که دیگر فرزندی ندارند را حذف می‌کند.

دقت داشته باشید که محدود کردن گره‌های NUMA در یک توپولوژی ممکن است نمایه‌های منطقی بسیاری از اشیاء، از جمله واحدهای PU را تغییر دهد.

توپولوژی را به مقیدسازی فرآیند جاری محدود می‌کند. این گزینه نیازمند استفاده از توپولوژی واقعی ماشین جاری است (یا هر توپولوژی دیگری با --thissystem یا با تنظیم HWLOC_THISSYSTEM برابر ۱ در محیط).

دقت داشته باشید که محدود کردن توپولوژی ممکن است نمایه‌های منطقی بسیاری از اشیاء، از جمله PUها و گره‌های NUMA را تغییر دهد.

اعمال فلگ‌ها هنگام محدود کردن توپولوژی. فلگ‌ها می‌توانند به صورت مقادیر عددی یا فهرستی جداشده با کاما از نام فلگ‌ها مشخص شوند که به hwloc_topology_restrict() پاس داده می‌شوند. این نام‌ها تا زمانی که تطابق یکتایی داشته باشند می‌توانند زیررشته‌ای از نام واقعی فلگ باشند، برای نمونه bynodeset,memless. پیش‌فرض 0 (یا none) است.
اشیاء از نوع <type> را فیلتر می‌کند، یا اگر <type> برابر با "all" باشد هر نوعی را فیلتر می‌کند. انواع "io"، "cache" و "icache" نیز پشتیبانی می‌شوند.

شناسه <kind> رفتار فیلتر کردن را تعیین می‌کند. اگر "none" باشد یا مشخص نشود، تمام اشیاء نوع داده‌شده حذف می‌شوند. اگر "all" باشد، تمام اشیاء مانند معمول حفظ می‌شوند. اگر "structure" باشد، اشیاء زمانی که ساختاری به توپولوژی اضافه می‌کنند حفظ می‌شوند. اگر "important" باشد (فقط برای I/O و Misc کاربرد دارد)، فقط اشیاء مهم حفظ می‌شوند. برای جزئیات بیشتر به ()hwloc_topology_set_type_filter مراجعه کنید.

کش‌های دستورالعمل (Instruction caches) را نشان نمی‌دهد، تنها کش‌های داده و یکپارچه در نظر گرفته می‌شوند. این معادل --filter icache:none است.
هیچ دستگاه ورودی/خروجی (I/O) یا پلی را نشان نمی‌دهد. این معادل --filter io:none است. به طور پیش‌فرض، دستگاه‌های رایج (کارت‌های گرافیک، کارت‌های شبکه، دستگاه‌های بلوک و...) و پل‌های جالب توجه نشان داده می‌شوند.
هیچ پل ورودی/خروجی به جز hostbridgeها را نشان نمی‌دهد. این معادل --filter bridge:none است. به طور پیش‌فرض، دستگاه‌های رایج (کارت‌های گرافیک، کارت‌های شبکه، دستگاه‌های بلوک و...) و پل‌های جالب توجه نشان داده می‌شوند.
تمام دستگاه‌های ورودی/خروجی و پل‌ها را نشان می‌دهد. این معادل --filter io:all است. به طور پیش‌فرض، تنها دستگاه‌های رایج (کارت‌های گرافیک، کارت‌های شبکه، دستگاه‌های بلوک و...) و پل‌های جالب توجه نشان داده می‌شوند.
فرض می‌کند بک‌اند انتخاب‌شده توپولوژی سامانه‌ای را فراهم می‌کند که ما در حال اجرا روی آن هستیم. این هنگام استفاده از --restrict binding و بارگذاری یک توپولوژی سفارشی مانند یک پرونده XML مفید است.
توپولوژی را همان‌طور که توسط فرآیند <pid> دیده می‌شود شناسایی می‌کند، یعنی گویی خود فرآیند <pid> عملیات کشف را انجام داده است. توجه داشته باشید که این می‌تواند برای نمونه مجموعه پردازنده‌های مجاز را تغییر دهد. همچنین مقیدسازی جاری پردازنده این فرآیند را با علامت‌گذاری واحدهای PU مربوطه نشان می‌دهد (به رنگ سبز در خروجی گرافیکی، بخش COLORS در زیر را ببینید، یا با افزودن (binding) به خروجی متنی پرجزئیات). اگر ۰ به عنوان pid داده شود، مقیدسازی جاری برای فرآیند lstopo نشان داده خواهد شد.
از نمایه‌های فیزیکی/سیستم‌عامل به جای نمایه‌های منطقی برای ورودی استفاده می‌کند.
از نمایه‌های منطقی به جای نمایه‌های فیزیکی/سیستم‌عامل برای ورودی استفاده می‌کند (پیش‌فرض).
گزارش نسخه و خروج.
نمایش پیام راهنما و خروج.

دستور hwloc-info اطلاعات مربوط به اشیاء مشخص‌شده را نمایش می‌دهد. این ابزار در نظر گرفته شده است تا همراه با ابزارهایی مانند grep برای فیلتر کردن سطرهای ویژگی‌های خاص به کار رود. هنگامی که هیچ شیئی مشخص نشده باشد، یا زمانی که --topology ارسال شود، hwloc-info خلاصه‌ای از توپولوژی را چاپ می‌کند. هنگامی که --support ارسال شود، hwloc-info ویژگی‌های پشتیبانی‌شده برای این توپولوژی را فهرست می‌کند.

اشیاء ممکن است به صورت چندتایی‌های موقعیت مشخص شوند، همان‌طور که در hwloc(7) توضیح داده شده است. با این حال ماسک‌های بیتی هگزادسیمال پذیرفته نمی‌شوند، زیرا ممکن است با چندین شیء مطابقت داشته باشند.

نکته: بسیار توصیه می‌شود که پیش از خواندن این صفحه راهنما، صفحه نمای کلی hwloc(7) را مطالعه کنید. بیشتر مفاهیم توصیف‌شده در hwloc(7) مستقیماً در ابزار hwloc-calc نیز کاربرد دارند.

برای نمایش اطلاعات مربوط به هر بسته (Package):


$ hwloc-info package:all
Package L#0
logical index = 0
...

برای نمایش اطلاعات مربوط به هسته‌ای که نمایه فیزیکی آن ۲ است:


$ hwloc-info -p core:2
Core L#1
logical index = 1
os index = 2
...

برای فهرست کردن دستگاه‌های سیستم‌عامل که از زیرنوع OpenCL هستند:


$ hwloc-info -s "os[OpenCL]:all"
CoProc:6
CoProc:8

برای یافتن شناسه گذرگاه PCI دستگاه‌های PCI شامل دستگاه‌های OpenCL:


$ hwloc-info --ancestor PCI --get-attr "attr PCI bus id" 'os[opencl]:all'
0000:05:00.0
0000:42:00.0

برای فهرست کردن گره‌های NUMA که محلیِ یک PU هستند:


$ hwloc-info --local-memory pu:25
NUMANode L#6 = local memory #0 of PU L#25
type = NUMANode
...
NUMANode L#7 = local memory #1 of PU L#25
type = NUMANode
...

برای نمایش گره(های) دارای بهترین پهنای باند در میان گره‌های NUMA محلیِ یک PU:


$ hwloc-info --local-memory --best-memattr bandwidth pu:25
NUMANode L#7 = local memory #1 of PU L#25
type = NUMANode
...

برای یافتن جایی که یک گره NUMA در سلسله‌مراتب هسته‌های پردازنده متصل شده است:


$ hwloc-info --ancestor kind=normal --first -s numa:1
Package:0

برای مشاهده سطوح و ویژگی‌های اطلاعات توپولوژی ذخیره‌شده در شیء ریشه:


$ hwloc-info levels topology
depth 0: 1 Machine (type #0)
depth 1: 1 Package (type #1)
depth 2: 2 Core (type #2)
depth 3: 4 PU (type #3)
Special depth -3: 1 NUMANode (type #13)
info Backend = Linux
info LinuxCgroup = /user/622
info Architecture = x86_64
info hwlocVersion = 3.0.0a1-git

hwloc(7), lstopo(1), hwloc-calc(1), hwloc-bind(1), hwloc-ps(1)

June 8, 2026 2.14.0