| LSTOPO(1) | hwloc | LSTOPO(1) |
نام (NAME)
lstopo, lstopo-no-graphics, hwloc-ls - نمایش توپولوژی سیستم
خلاصه دستور (SYNOPSIS)
lstopo [ options ]... [ filename ]
lstopo-no-graphics [ options ]... [ filename ]
hwloc-ls [ options ]... [ filename ]
توجه داشته باشید که hwloc(7) توضیحات مفصلی دربارهٔ سامانهٔ hwloc ارائه میدهد؛ بهتر است پیش از خواندن این صفحهٔ راهنما، آن را مطالعه کنید.
گزینهها (OPTIONS)
- --of <format>, --output-format <format>
- اجبار خروجی در قالب دادهشده. بخش OUTPUT FORMATS در ادامه را ببینید.
- -i <path>, --input <path>
- خواندن
توپولوژی
از <path> به جای
شناسایی
توپولوژی
ماشین محلی.
اگر <path> یک فایل باشد، میتواند یک فایل XML باشد که توسط برنامهٔ پیشین hwloc صادر شده است. اگر <path> برابر با "-" باشد، میتوان از ورودی استاندارد به عنوان یک فایل XML استفاده کرد.
در Linux، مقدار <path> میتواند دایرکتوریای حاوی فایلهای توپولوژی باشد که از توپولوژی یک ماشین دیگر با استفاده از hwloc-gather-topology جمعآوری شدهاند.
در x86، مقدار <path> میتواند دایرکتوریای حاوی یک دامپ cpuid باشد که با hwloc-gather-cpuid جمعآوری شده است.
هنگامی که برنامهٔ archivemount در دسترس باشد، <path> همچنین میتواند یک فایل tarball حاوی چنین فایلهای توپولوژی Linux یا x86 باشد.
- -i <specification>, --input <specification>
- شبیهسازی یک سلسلهمراتب ساختگی (به جای کشف توپولوژی روی ماشین محلی). اگر <specification> برابر با "node:2 pu:3" باشد، توپولوژی شامل دو گره NUMA خواهد بود که در هر کدام ۳ واحد پردازشی (PU) وجود دارد. رشتهٔ <specification> باید با تعداد PUها پایان یابد.
- --if <format>, --input-format <format>
- اجبار ورودی در قالب دادهشده، از میان xml، fsroot، cpuid و synthetic.
- --export-xml-flags <flags>
- اجبار پرچمها هنگام صدور به قالب XML. پرچمها میتوانند به صورت مقادیر عددی یا فهرستی جداشده با کاما از نام پرچمها داده شوند که به hwloc_topology_export_xml() فرستاده میشوند. این نامها تا زمانی که تنها با یک پرچم تطابق داشته باشند، میتوانند زیررشتههایی از نام پرچمهای واقعی باشند. مقدار 1 (یا v1) به قالب hwloc v1.x بازمیگردد. مقدار پیشفرض 0 (یا none) است.
- --export-synthetic-flags <flags>
- اجبار پرچمها هنگام صدور به قالب synthetic. پرچمها میتوانند به صورت مقادیر عددی یا فهرستی جداشده با کاما از نام پرچمها داده شوند که به hwloc_topology_export_synthetic() فرستاده میشوند. این نامها تا زمانی که تنها با یک پرچم تطابق داشته باشند، میتوانند زیررشتههایی از نام پرچمهای واقعی باشند. مقدار 2 (یا no_attr) به قالب hwloc v1.9 بازمیگردد. مقدار 3 (یا no_ext,no_attr) به قالب مینیمال اولیه (پیش از v1.9) بازمیگردد. مقدار پیشفرض 0 (یا none) است.
- -v --verbose
- گنجاندن جزئیات بیشتر. ابزار hwloc-info میتواند برای نمایش اطلاعات حتی بیشتر دربارهٔ اشیاء خاص استفاده شود.
- -q --quiet -s --silent
- کاهش میزان جزئیات برای نمایش.
- --distances
- تنها نمایش ماتریسهای فاصله.
- --distances-transform <links|merge-switch-ports|transitive-closure>
- تلاش برای اعمال یک تبدیل روی ساختارهای فاصلهها پیش از نمایش آنها. برای جزئیات بیشتر hwloc_distances_transform() را ببینید. تبدیلهای بیشتری را میتوان با استفاده از hwloc-annotate(1) اعمال کرد (و میتواند خروجی آنها را در XML ذخیره کند).
- --memattrs
- تنها نمایش ویژگیهای حافظه (memory attributes). همهٔ آنها نمایش داده میشوند (در حالی که خروجی متنی پیشفرض، جزئیات ویژگیهای حافظه را بسته به سطح پرگویی انتخاب میکند).
- --cpukinds
- تنها نمایش انواع CPU. انواع CPU به ترتیب نمایش داده میشوند، از بهینهترینها از نظر مصرف انرژی تا نمونههای با کارایی نسبتاً بالاتر و پرمصرفتر.
- --windows-processor-groups
- در Windows، تنها اطلاعات مربوط به گروههای پردازنده نمایش داده شود. همهٔ آنها نمایش داده میشوند، در حالی که خروجی پرگوی پیشفرض تنها در صورتی که بیش از یکی وجود داشته باشد آنها را نشان میدهد.
- -f --force
- اگر فایل مقصد از پیش وجود داشته باشد، آن را بازنویسی کن.
- -l --logical
- نمایش نمایههای منطقی hwloc برای تمام اشیاء، با پیشوند "L#". بهطور پیشفرض، برای PUها و گرههای NUMA هم نمایههای منطقی و هم فیزیکی/سیستمعامل، برای هستهها، دایها و بستهها تنها نمایههای منطقی، و برای انواع دیگر هیچ نمایهای نمایش داده نمیشود.
- -p --physical
- نمایش نمایههای فیزیکی/سیستمعامل تمام اشیاء، با پیشوند "P#". بهطور پیشفرض، برای PUها و گرههای NUMA هم نمایههای منطقی و هم فیزیکی/سیستمعامل، برای هستهها، دایها و بستهها تنها نمایههای منطقی، و برای انواع دیگر هیچ نمایهای نمایش داده نمیشود.
- --logical-index-prefix <prefix>
- جایگزینی " L#" با پیشوند دادهشده برای نمایههای منطقی.
- --os-index-prefix <prefix>
- جایگزینی " P#" با پیشوند دادهشده برای نمایههای فیزیکی/سیستمعامل.
- -c --cpuset
- نمایش cpuset هر شیء.
- -C --cpuset-only
- تنها نمایش cpuset هر شیء؛ هیچ چیز دیگری دربارهٔ شیء نمایش داده نشود.
- --cpuset-output-format <hwloc|list|taskset> --cof <hwloc|list|taskset>
- تغییر قالب
رشتههای
مجموعهٔ CPU
نمایشدادهشده.
بهطور
پیشفرض،
از قالب
مختص hwloc
استفاده
میشود. اگر
list داده
شود، خروجی
به صورت
فهرستی
جداشده با
کاما از
اعداد یا
بازهها
خواهد بود،
مانند 2,4-5,8 .
اگر taskset داده
شود، cpusetهای
خروجی با
برنامهٔ taskset
سازگار
خواهند بود
(جایگزین
گزینهٔ
پیشین --taskset).
این گزینه باید با --cpuset یا --cpuset-only ترکیب شود، در غیر این صورت متضمن --cpuset خواهد بود.
- --only <type>
- تنها نمایش
اشیاء از
نوع
دادهشده
در خروجی
متنی.
مقدار <type> میتواند شامل یک پالایه برای انتخاب اشیاء خاصی از آن نوع باشد. به عنوان مثال --only NUMA[HBM] تنها گرههای NUMA با زیرنوع "HBM" را نشان میدهد، در حالی که --only "numa[mcdram]" تنها گرههای NUMA از نوع MCDRAM را در پردازندههای KNL نمایش میدهد.
- --filter <type>:<kind>, --filter <type>
- پالایش
اشیاء از
نوع <type>، یا
از هر نوعی
اگر <type>
برابر با "all"
باشد. انواع
"io"، "cache" و "icache"
نیز
پشتیبانی
میشوند.
پارامتر <kind> رفتار پالایش را مشخص میکند. اگر "none" باشد یا مشخص نشود، تمام اشیاء از نوع دادهشده حذف میشوند. اگر "all" باشد، تمام اشیاء مانند معمول نگهداری میشوند. اگر "structure" باشد، اشیاء در صورتی که ساختاری به توپولوژی اضافه کنند نگهداری میشوند. اگر "important" باشد (تنها برای I/O کاربرد دارد)، تنها اشیاء مهم نگهداری میشوند. برای جزئیات بیشتر hwloc_topology_set_type_filter() را ببینید.
ابزار hwloc از پالایش هر نوعی به جز PUها و گرههای NUMA پشتیبانی میکند. دستور lstopo همچنین امکان پالایش PU و گرههای NUMA را با پنهان کردن آنها در خروجیهای گرافیکی و متنی ارائه میدهد، اما هر شیء گنجاندهشده در آنها (برای مثال Misc) نیز پنهان خواهد شد. توجه داشته باشید که PUها و گرههای NUMA را نمیتوان در خروجی XML نادیده گرفت. همچنین توجه داشته باشید که نوع شیء بالاترین سطح (معمولاً Machine یا System) را نمیتوان نادیده گرفت..TP --ignore <type> این روش قدیمی برای تعیین --filter <type>:none است.
- --no-smt
- نادیدهگرفتن PUها. این معادل --filter PU:none است.
- --no-caches
- عدم نمایش حافظههای نهان (کاشهها). این معادل --filter cache:none است.
- --no-useless-caches
- این معادل --filter cache:structure است.
- --no-icaches
- این معادل --filter icache:none است.
- --disallowed
- شامل کردن اشیایی که به دلیل محدودیتهای مدیریتی مجاز نیستند (مانند Cgroups در Linux). PUها و گرههای NUMA آفلاین همچنان نادیده گرفته میشوند.
- --allow <all|local|0xff|nodeset=0xf0>
- شامل کردن
اشیایی که
به دلیل
محدودیتهای
مدیریتی
مجاز
نیستند (به
معنی
فعالسازی
خودکار --disallowed)
و همچنین
تغییر
مجموعه
موارد مجاز.
اگر local داده شود، تنها اشیاء در دسترس برای فرایند جاری مجاز خواهند بود (رفتار پیشفرض هنگام بارگذاری از بکاند بومی سیستمعامل). این ممکن است زمانی مفید باشد که توپولوژی توسط فرایند دیگری (با محدودیتهای مدیریتی متفاوت مانند Linux Cgroups) ایجاد شده و در اینجا از طریق XML یا مصنوعی (synthetic) بارگذاری شده باشد. این حالت متضمن --thissystem است.
اگر all باشد، همه اشیاء مجاز هستند.
اگر یک نگاشت بیتی (bitmap) به صورت یک رشته هگزادسیمال داده شود، به عنوان مجموعه PUهای مجاز استفاده میشود.
اگر یک نگاشت بیتی پس از پیشوند nodeset= داده شود، مجموعه گرههای NUMA مجاز خواهد بود.
- --flags <flags>
- اعمال پرچمهای توپولوژی. پرچمها میتوانند به صورت مقادیر عددی یا فهرستی جدا شده با ویرگول از نامهای پرچم داده شوند که به hwloc_topology_set_flags() ارسال میشوند. این نامها تا زمانی که تنها با یک مورد مطابقت داشته باشند میتوانند زیررشتههایی از نامهای واقعی پرچم باشند، به عنوان مثال disallowed,thissystem_allowed. پیشفرض 8 (یا import) است.
- --merge
- سطوحی که تأثیر سلسلهمراتبی ندارند نمایش داده نشوند. این گزینه HWLOC_TYPE_FILTER_KEEP_STRUCTURE را برای تمام انواع اشیاء تنظیم میکند. این معادل --filter all:structure است.
- --no-factorize --no-factorize=<type>
- هرگز اشیاء
یکسان را در
خروجی
گرافیکی
فاکتورگیری
(تجمیع)
نکنید.
اگر یک نوع شیء مشخص شود، تنها فاکتورگیری همان اشیاء غیرفعال میشود. این مورد فقط برای اشیاء معمولی سمت CPU اعمال میشود و مستقل از ادغام (collapsing) مربوط به PCI است.
- --factorize --factorize=[<type>,]<N>[,<F>[,<L>]]
- فاکتورگیری
از فرزندان
یکسان در
خروجی
گرافیکی
(بهطور
پیشفرض
فعال است).
اگر <N> مشخص شود (بهطور پیشفرض ۴)، فاکتورگیری تنها زمانی رخ میدهد که اکیداً بیش از N فرزند یکسان وجود داشته باشد. اگر <F> و <L> مشخص شوند، تعداد اولین و آخرین فرزندانی را که باید پس از فاکتورگیری نگه داشته شوند تعیین میکنند.
اگر نوع شیء داده شود، فقط فاکتورگیری این اشیاء پیکربندی میشود. این مورد فقط برای اشیاء معمولی سمت CPU اعمال میشود و مستقل از ادغام PCI است.
- --no-collapse
- عدم ادغام دستگاههای PCI یکسان. بهطور پیشفرض، دستگاههای PCI همزاد و یکسان (مانند توابع مجازی متعدد درون یک دستگاه فیزیکی واحد) ادغام میشوند.
- --no-cpukinds
- عدم نمایش انواع مختلف CPUها در خروجی گرافیکی. بهطور پیشفرض، در صورت پشتیبانی، ممکن است از انواع مختلف خطوط، ضخامتها و قلم توپر (bold) برای نمایش جعبههای PU از انواع مختلف استفاده شود.
- --restrict <cpuset>
- محدود کردن
توپولوژی
به cpuset
دادهشده.
این کار
برخی از PUها
و والدینی
را که اکنون
بدون فرزند
شدهاند
حذف میکند.
توجه داشته باشید که محدود کردن PUها در یک توپولوژی ممکن است نمایههای منطقی بسیاری از اشیاء، از جمله گرههای NUMA را تغییر دهد.
- --restrict nodeset=<nodeset>
- محدود کردن
توپولوژی
به nodeset
دادهشده
(مگر اینکه
--restrict-flags مورد
دیگری را
مشخص کند).
این کار
برخی از
گرههای NUMA و
والدینی را
که اکنون
بدون فرزند
شدهاند
حذف میکند.
توجه داشته باشید که محدود کردن گرههای NUMA در یک توپولوژی ممکن است نمایههای منطقی بسیاری از اشیاء، از جمله PUها را تغییر دهد.
- --restrict binding
- محدود کردن
توپولوژی
به قید (binding)
فرایند
جاری. این
گزینه
نیازمند
استفاده از
توپولوژی
واقعی
ماشین فعلی
است (یا هر
توپولوژی
دیگری با
--thissystem یا با
تنظیم بودن
HWLOC_THISSYSTEM برابر با
۱ در
متغیرهای
محیطی).
توجه داشته باشید که محدود کردن توپولوژی ممکن است نمایههای منطقی بسیاری از اشیاء، از جمله PUها و گرههای NUMA را تغییر دهد.
- --restrict-flags <flags>
- اعمال پرچمها هنگام محدود کردن توپولوژی. پرچمها میتوانند به صورت مقادیر عددی یا فهرستی جدا شده با ویرگول از نامهای پرچم داده شوند که به hwloc_topology_restrict() ارسال میشوند. این نامها تا زمانی که تنها با یک مورد مطابقت داشته باشند میتوانند زیررشتههایی از نامهای واقعی پرچم باشند، برای نمونه bynodeset,memless. پیشفرض 0 (یا none) است.
- --no-io
- عدم نمایش هرگونه دستگاه I/O یا پل (bridge). این معادل --filter io:none است. بهطور پیشفرض، دستگاههای رایج (GPUها، NICها، دستگاههای بلوکی و ...) و پلها/سوییچهای قابلتوجه نمایش داده میشوند.
- --no-bridges
- عدم نمایش هرگونه پل I/O به جز پلهای میزبان (hostbridges). این معادل --filter bridge:none است. بهطور پیشفرض، دستگاههای رایج (GPUها، NICها، دستگاههای بلوکی و ...) و پلها/سوییچهای قابلتوجه نمایش داده میشوند.
- --whole-io
- نمایش تمامی دستگاهها و پلهای I/O. این معادل --filter io:all است. بهطور پیشفرض، تنها دستگاههای رایج (GPUها، NICها، دستگاههای بلوکی و ...) و پلها/سوییچهای قابلتوجه نمایش داده میشوند.
- --thissystem
- فرض اینکه بکاند انتخابشده، توپولوژی سامانهای را فراهم میکند که در آن در حال اجرا هستیم. این گزینه هنگام بارگذاری یک توپولوژی سفارشی مانند یک فایل XML و استفاده از --restrict binding یا --allow all مفید است.
- --pid <pid>
- تشخیص توپولوژی آنگونه که توسط فرایند <pid> دیده میشود؛ یعنی گویی خود فرایند <pid> عملیات شناسایی را انجام داده است. توجه داشته باشید که این کار میتواند برای نمونه مجموعه پردازندههای مجاز را تغییر دهد. همچنین قید CPU و حافظه جاری این فرایند را با علامتگذاری PUها و گرههای NUMA متناظر نشان میدهد (به رنگ سبز در خروجی گرافیکی، بخش رنگها (COLORS) را در زیر ببینید، یا با افزودن (binding) به خروجی متنی پرجزئیات). اگر مقدار 0 به عنوان pid داده شود، قید جاری فرایند lstopo نمایش داده خواهد شد.
- --ps --top
- نمایش
فرایندهای
موجود به
عنوان
اشیاء
متفرقه (misc) در
خروجی. برای
جلوگیری از
شلوغی
بیهوده در
خروجی،
تنها
فرایندهایی
نشان داده
میشوند که
به بخشی از
ماشین
محدود
شدهاند. در
Linux،
رشتههای
هسته (kernel threads)
نشان داده
نمیشوند.
اگر
فرایندهای
زیادی وجود
داشته
باشند، در
هر حال ممکن
است خواندن
خروجی
دشوار شود،
که در این
حالت
استفاده از
برنامه hwloc-ps
کاربردیتر
خواهد بود.
برای یک نسخه سفارشیسازیپذیر با استفاده از hwloc-ps، گزینه --misc-from را ببینید.
- --misc-from <file>
- افزودن
اشیاء
متفرقه (Misc)
طبق توصیف
موجود در <file>
که شامل
ورودیهایی
از این قبیل
است:
name=myMisc1
cpuset=0x5
name=myMisc2
cpuset=0x7
subtype=myOptionalSubtypeاین گزینه برای ترکیب با hwloc-ps --lstopo-misc مفید است (بخش مثالها (EXAMPLES) در زیر را ببینید)، زیرا hwloc-ps بسیار بیشتر از گزینه --top مربوط به lstopo قابلیت سفارشیسازی دارد.
- --children-order <order>
- تغییر
ترتیب
انواع
گوناگون
فرزندان
نسبت به
والد آنها
در خروجی
گرافیکی.
<order>
میتواند
فهرستی جدا
شده با
ویرگول از
کلیدواژههای
زیر باشد:
memory:above فرزندان حافظه را بالای سایر فرزندان نمایش میدهد (و بالای والد اگر حافظه نهان باشد). بنابراین PUها زیر گرههای NUMA محلی خود قرار میگیرند، همانند رفتاری که hwloc 1.x داشت.
io:right و misc:right فرزندان I/O یا Misc را در سمت راست فرزندان CPU قرار میدهند.
io:below و misc:below فرزندان I/O یا Misc را در زیر فرزندان CPU قرار میدهند.
plain مواردی را که مشخص نشدهاند، همراه با فرزندان عادی CPU قرار میدهد.
اگر تنها plain مشخص شود، lstopo توپولوژی را به شیوهای پایه نمایش میدهد که دقیقاً مطابق درخت واقعی است: فرزندان Memory، I/O و Misc درست مانند هر فرزند دیگری در زیر والد خود فهرست میشوند. بنابراین PUها در کنار گرههای NUMA محلی خود، زیر یک نیای مشترک قرار میگیرند. این خروجی ممکن است به چیدمانهای عجیبی منجر شود زیرا اندازه فرزندان Memory، CPU و I/O میتواند بسیار متفاوت باشد و باعث شود الگوریتم جایگذاری آنها را به شکلی نامناسب در سطرها مرتب کند.
ترتیب پیشفرض memory:above,io:right,misc:right است، به این معنی که فرزندان Memory بالای فرزندان CPU هستند در حالی که I/O و Misc در کنار هم در سمت راست قرار دارند.
تا نسخه hwloc 2.5، پیشفرض برنامه memory:above,plain بود.
علاوه بر این، گزینههای memory:above، io:right، io:below، misc:right و misc:below میتوانند با پسوندهای :horiz، :vert یا :rect بیایند تا چیدمان افقی، عمودی یا مستطیلی فرزندان را در این بخشها تحمیل کنند.
همچنین بخشهای خروجی گرافیکی (GRAPHICAL OUTPUT) و چیدمان (LAYOUT) را در زیر ببینید..TP --fontsize <size> تنظیم اندازهٔ قلم متن در خروجی گرافیکی.
مقدار پیشفرض ۱۰ است.
جعبهها متناسب با اندازهٔ متن مقیاسبندی میشوند. متغیر محیطی LSTOPO_TEXT_XSCALE میتواند برای مقیاسبندی بیشتر عرض جعبهها استفاده شود (مقدار پیشفرض آن 1.0 است).
گزینهٔ --fontsize در بکاند ASCII نادیده گرفته میشود.
- --gridsize <size>
- تنظیم
حاشیهٔ بین
عناصر در
خروجی
گرافیکی.
مقدار پیشفرض ۷ است. این مقدار پیش از hwloc 2.1 برابر ۱۰ بود.
این گزینه در بکاند ASCII نادیده گرفته میشود.
- --linespacing <size>
- تنظیم
فاصلهٔ بین
خطوط متن در
خروجی
گرافیکی.
مقدار پیشفرض ۴ است.
این گزینه پیش از hwloc 2.1 درون --gridsize گنجانده شده بود (و مقدار پیشفرض آن ۱۰ بود).
این گزینه در بکاند ASCII نادیده گرفته میشود.
- --thickness <size>
- تنظیم
ضخامت خطوط
و جعبهها
در خروجی
گرافیکی.
مقدار پیشفرض ۱ است.
این گزینه در بکاند ASCII نادیده گرفته میشود.
- --horiz, --horiz=<type1,...>
- تحمیل یک چیدمان گرافیکی افقی به جای نسبت تقریبی ۴/۳ در خروجی گرافیکی. اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، این چیدمان تنها بر اشیاء container متناظر اعمال میشود. برای bridgeها نادیده گرفته میشود، زیرا فرزندان آنها همواره به صورت عمودی تراز شدهاند.
- --vert, --vert=<type1,...>
- تحمیل یک چیدمان گرافیکی عمودی به جای نسبت تقریبی ۴/۳ در خروجی گرافیکی. اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، این چیدمان تنها بر اشیاء container متناظر اعمال میشود.
- --rect, --rect=<type1,...>
- تحمیل یک چیدمان گرافیکی مستطیلی با نسبت تقریبی ۴/۳ در خروجی گرافیکی. اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، این چیدمان تنها بر اشیاء container متناظر اعمال میشود. برای bridgeها نادیده گرفته میشود، زیرا فرزندان آنها همواره به صورت عمودی تراز شدهاند.
- --no-text, --no-text=<type1,...>
- هیچ متنی را درون جعبهها در خروجی گرافیکی نمایش نمیدهد. اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، متن برای اشیاء متناظر غیرفعال میشود. این گزینه بیشتر برای حذف متن از اشیاء Group مفید است.
- --text, --text=<type1,...>
- نمایش متن درون جعبهها در خروجی گرافیکی (پیشفرض). اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، متن برای اشیاء متناظر دوباره فعال میشود (چنانچه پیشتر با --no-text غیرفعال شده باشد).
- --no-index, --no-index=<type1,...>
- نمایههای (اندیسهای) شیء را در خروجی گرافیکی نشان نمیدهد. اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، نمایهها برای اشیاء متناظر غیرفعال میشوند.
- --index, --index=<type1,...>
- نمایش نمایههای شیء در خروجی گرافیکی (پیشفرض). اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، نمایهها برای اشیاء متناظر دوباره فعال میشوند (چنانچه پیشتر با --no-index غیرفعال شده باشند).
- --no-attrs, --no-attrs=<type1,...>
- ویژگیهای اشیاء (مانند اندازه حافظه، اندازه حافظه نهان، شناسه گذرگاه PCI، سرعت پیوند PCI، و غیره) را در خروجی گرافیکی نشان نمیدهد. اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، ویژگیها برای اشیاء متناظر غیرفعال میشوند.
- --attrs, --attrs=<type1,...>
- نمایش ویژگیهای اشیاء (مانند اندازه حافظه، اندازه حافظه نهان، شناسه گذرگاه PCI، سرعت پیوند PCI، و غیره) در خروجی گرافیکی (پیشفرض). اگر فهرستی از انواع اشیاء که با کاما از هم جدا شدهاند ارائه شود، ویژگیها برای اشیاء متناظر دوباره فعال میشوند (چنانچه پیشتر با --no-attrs غیرفعال شده باشند).
- --no-legend
- حذف تمام خطوط راهنمای متنی در پایین خروجی گرافیکی.
- --no-default-legend
- حذف خطوط پیشفرض راهنمای متنی در پایین خروجی گرافیکی. خطوط راهنمای اضافهشده توسط کاربر با --append-legend یا اطلاعات «lstopoLegend» (در صورت وجود) همچنان نمایش داده میشوند.
- --append-legend <line>
- الحاق خط متنی به انتهای راهنما در خروجی گرافیکی. در صورت افزودن چند خط، هر خط باید با تعیین چندبارهٔ این گزینه به صورت جداگانه مشخص شود. خطوط راهنمای اضافی همچنین میتوانند درون توپولوژی با استفاده از ویژگیهای اطلاعاتی «lstopoLegend» روی شیء ریشه توپولوژی مشخص شوند.
- --grey, --greyscale
- استفاده از مقیاس خاکستری به جای رنگها در خروجی گرافیکی.
- --palette <grey|greyscale|defaut|colors|white|none>
- تغییر پالت رنگی. دادن مقدار grey یا greyscale مشابه با فرستادن گزینهٔ --grey یا --greyscale است. دادن مقدار white یا none به جای رنگها از رنگ سفید برای پسزمینهٔ همهٔ جعبهها استفاده میکند. دادن مقدار default یا colors به پالت رنگی پیشفرض بازمیگرداند.
- --palette type=#rrggbb
- جایگزینی
رنگ نوع
جعبهٔ
مشخصشده
با ترکیب
هگزادسیمال
3x8bit مدل RGB
دادهشده
(مثلاً #ff0000
برای رنگ
قرمز).
انواع
موجود
عبارتند از:
machine، group، package،
group_in_package، die، core،
pu، numanode، memories
(جعبهٔ شامل
چندین
حافظهٔ
فرزند)، cache،
pcidev، osdev، bridge، و
misc.
همچنین بخش CUSTOM COLOR را در زیر برای شخصیسازی اشیاء تکی ببینید.
- --binding-color <none|#rrggbb>
- عدم رنگآمیزی PUها و گرههای NUMA بر اساس اتصال (binding) در خروجی گرافیکی. یا تغییر رنگ به ترکیب هگزادسیمال 3x8bit مدل RGB دادهشده (مثلاً #ff0000 برای قرمز).
- --disallowed-color <none|#rrggbb>
- عدم رنگآمیزی PUها و گرههای NUMA غیرمجاز در خروجی گرافیکی. یا تغییر رنگ به ترکیب هگزادسیمال 3x8bit مدل RGB دادهشده (مثلاً #00ff00 برای سبز).
- --top-color <none|#rrggbb>
- عدم رنگآمیزی اشیاء وظیفه (task) در خروجی گرافیکی هنگامی که --top داده شده باشد. یا تغییر رنگ به ترکیب هگزادسیمال 3x8bit مدل RGB دادهشده (مثلاً #0000ff برای آبی). این در واقع بر اشیاء Misc از نوع فرعی Process یا Thread اعمال میشود.
- --version
- گزارش نسخه و خروج.
- -h --help
- نمایش پیام راهنما و خروج. ابزارهای lstopo و lstopo-no-graphics قادرند یک نقشهٔ توپولوژیکی از سیستم را در انواع قالبهای خروجی گوناگون نمایش دهند. تنها تفاوت میان lstopo و lstopo-no-graphics این است که خروجیهای گرافیکی تنها توسط lstopo پشتیبانی میشوند، تا وابستگیها به کتابخانههای خارجی کاهش یابد. دستور hwloc-ls همتای lstopo-no-graphics است.
نام فایل مشخصشده مستقیماً قالب خروجی مورد استفاده را تعیین میکند؛ بخش «قالبهای خروجی (OUTPUT FORMATS)» در ادامه را ببینید. قالبهای خروجی دارای پشتیبانی از رنگ، ویژگیهای خاص هر پردازندهٔ مجزا را با رنگ آنها نشان میدهند؛ بخش «رنگها (COLORS)» در ادامه را ببینید.
قالبهای خروجی (OUTPUT FORMATS)
بهطور پیشفرض، اگر نام فایل خروجی مشخص نشود، در صورت امکان در محیط جاری (مانند تنظیم بودن متغیر محیطی DISPLAY در یونیکس و غیره)، خروجی به یک پنجرهٔ گرافیکی ارسال میشود. در غیر این صورت، خلاصهای متنی در کنسول نمایش داده میشود. کنسول همچنین هنگامی استفاده میشود که برنامه از یک ترمینال اجرا شود و خروجی به یک لوله (pipe) یا فایل هدایت گردد. این رفتارهای پیشفرض را میتوان با ارسال --of console برای اجبار حالت کنسول یا --of window برای پنجرهٔ گرافیکی تغییر داد.
نام فایل در خط فرمان معمولاً قالب خروجی را تعیین میکند. چند نام فایل خاص وجود دارند که نشاندهندهٔ قالبها و دستگاههای خروجی مشخصی هستند (برای نمونه، نام فایل "-" یک خلاصهٔ متنی را به stdout ارسال میکند)، اما اکثر نامهای فایل قالب خروجی مورد نظر را از طریق پسوند خود مشخص میکنند (برای نمونه، "topo.png" فایلی با قالب PNG خروجی میدهد).
قالب خروجی را میتوان با "--of" نیز تغییر داد. برای نمونه، "--of pdf" فایلی با قالب PDF در خروجی استاندارد تولید خواهد کرد، در حالی که "--of fig toto" فایلی با قالب Xfig به نام "toto" خروجی میدهد.
فهرست قالبهای پشتیبانیشدهٔ کنونی در زیر آورده شده است. هر یک از آنها را میتوان با "--of" یا به عنوان پسوند نام فایل به کار برد.
- default
- ارسال خروجی به یک پنجره یا به کنسول، بسته به محیط.
- window
- ارسال خروجی به یک پنجرهٔ گرافیکی.
- console
- ارسال خلاصهای متنی به stdout. پردازندههای مقید (binding) یا غیرمجاز تنها در صورتی که حالت پرگویی (verbose) فعال باشد نشانهگذاری میشوند؛ بخش «رنگها (COLORS)» در ادامه را ببینید.
- ascii
- نمایش نقشه
به صورت هنر
اسکی (ASCII art) (که
پیشتر txt
نامیده
میشد). اگر
خروجی به stdout
فرستاده
شود و
رنگها در
ترمینال
پشتیبانی
شوند،
خروجی رنگی
خواهد بود.
خروجی به یک صفحهبند (pager) (بهطور پیشفرض less) ارسال میشود. میتوان متغیر محیطی LSTOPO_PAGER را به برنامهٔ صفحهبند دیگری تنظیم کرد، یا برای غیرفعال کردن صفحهبند آن را روی cat قرار داد یا خالی گذاشت.
- tikz یا tex
- خروجی نمایش tikzpicture در LaTeX از نقشه که میتواند با یک کامپایلر LaTeX کامپایل شود.
- fig
- خروجی نمایشی از نقشه که میتواند در Xfig بارگذاری شود.
- svg
- خروجی نمایشی به صورت SVG از نقشه، با استفاده از Cairo (بهطور پیشفرض، در صورت پشتیبانی) یا بستر داخلی SVG (حالت پشتیبان، همیشه پشتیبانی میشود). cairosvg و nativesvg در ادامه را ببینید.
- cairosvg یا svg(cairo)
- اگر lstopo با پشتیبانی مناسب کامپایل شده باشد، نمایشی SVG از نقشه با استفاده از Cairo خروجی میدهد.
- nativesvg یا svg(native)
- خروجی نمایشی به صورت SVG از نقشه با استفاده از بستر داخلی SVG. این حالت ممکن است از خروجی Cairo زیبایی کمتری داشته باشد، اما همیشه پشتیبانی میشود و اشیاء SVG دارای ویژگیهایی برای شناسایی و دستکاری آنها هستند. برای نمونه، dynamic_SVG_example.html را ببینید.
- اگر lstopo با پشتیبانی مناسب کامپایل شده باشد، lstopo نمایشی با قالب PDF از نقشه خروجی میدهد.
- ps
- اگر lstopo با پشتیبانی مناسب کامپایل شده باشد، lstopo نمایشی با قالب Postscript از نقشه خروجی میدهد.
- png
- اگر lstopo با پشتیبانی مناسب کامپایل شده باشد، lstopo نمایشی با قالب PNG از نقشه خروجی میدهد.
- synthetic
- اگر توپولوژی متقارن باشد (که مستلزم تنظیم فیلد symmetric_subtree شیء ریشه است)، lstopo یک رشتهٔ توصیف ساختگی (synthetic) خروجی میدهد. این خروجی بعداً میتواند به عنوان ورودی توصیف توپولوژی ساختگی مورد استفاده مجدد قرار گیرد. همچنین بخش «Synthetic topologies» در مستندات را ببینید. توجه داشته باشید که دستگاههای Misc و I/O در حین این برونریزی نادیده گرفته میشوند.
- xml
- ابزار lstopo یک نمایش با قالب XML از نقشه خروجی میدهد. این خروجی میتواند بعداً، حتی در دستگاهی دیگر، با lstopo --input، متغیر محیطی HWLOC_XMLFILE یا تابع hwloc_topology_set_xml() مورد استفاده مجدد قرار گیرد.
نامهای ویژهٔ زیر میتوانند استفاده شوند:
- -
- ارسال خلاصهای متنی به stdout.
- /dev/stdout
- ارسال خلاصهای متنی به stdout. این عمل عملاً همانند مشخص کردن "-" است.
- -.<format>
- اگر کل نام فایل به صورت "-.<format>" باشد، lstopo طوری رفتار میکند که گویی "--of <format> -" داده شده است، به این معنی که فایلی با قالب دادهشده به خروجی استاندارد ارسال میشود.
برای مشاهدهٔ فهرستی دقیق از قالبهای خروجی گرافیکی پشتیبانیشده در نسخهٔ نصبشدهٔ hwloc خود، خروجی "lstopo --help" را ببینید. خروجی گرافیکی از جعبههای تو در تو تشکیل شده است که نمایانگر قرارگیری شیءها در سلسلهمراتب منابع هستند. معمولاً یک جعبهٔ Machine شامل یک یا چند جعبهٔ Package است که خود حاوی چندین جعبهٔ Core هستند و هر کدام یک یا چند PU دارند.
حافظههای نهان (Caches)
حافظههای نهان به شیوهای کمی متفاوت نمایش داده میشوند، زیرا آنها در عمل منابع پردازشی مانند هستهها را در بر نمیگیرند. برای نمونه، یک L2 Cache که میان یک جفت Core به اشتراک گذاشته شده است، به صورت یک جعبهٔ Cache در بالای دو جعبهٔ Core کشیده میشود (بهجای اینکه جعبههای Core درون جعبهٔ Cache قرار گیرند).
گرههای NUMA و حافظههای نهان سمت حافظه (Memory-side Caches)
بهطور پیشفرض، جعبههای گرههای NUMA در بالای منابع پردازشی محلی خود کشیده میشوند. برای نمونه، یک Package پردازنده که شامل یک گرهٔ NUMA و چهار Core است، به شکل یک جعبهٔ Package نمایش داده میشود که جعبهٔ گرهٔ NUMA را در بالای چهار جعبهٔ Core در بر دارد. اگر یک گرهٔ NUMA نسبت به L3 Cache محلی باشد، آن گرهٔ NUMA در بالای آن جعبهٔ Cache نمایش داده میشود. تمام این راهبرد اختصاصی ترسیم برای شیءهای حافظه را میتوان با ارسال گزینهٔ خط فرمان --children-order plain غیرفعال کرد.
اگر چندین گرهٔ NUMA به یک شیء والد یکسان متصل باشند، درون یک جعبهٔ حافظهٔ بینامِ اضافی نمایش داده میشوند.
چنانچه چند Memory-side Cache در مقابل برخی گرههای NUMA وجود داشته باشند، به صورت جعبههایی دقیقاً در بالای آنها کشیده میشوند.
پلهای PCI، دستگاههای PCI و دستگاههای سیستمعامل (OS devices)
سلسلهمراتب PCI نه به صورت مجموعهای از جعبههای تو در تو، بلکه به شکل درختی از پلها (که ممکن است در واقع سوئیچ باشند) با پیوندهایی میانشان کشیده میشود. این درخت با یک مربع کوچک در سمت چپ برای hostbridge یا root complex آغاز میشود. در سمت راست به جعبههای دستگاههای PCI ختم میشود. پلها/سوئیچهای واسط PCI ممکن است به صورت مربعهای کوچک اضافی در میانه ظاهر شوند.
دستگاههای PCI در سمت راست درخت، جعبههایی هستند که شناسهٔ گذرگاه PCI خود را شامل میشوند (مانند 00:02.3). آنها همچنین ممکن است شامل زیرجعبههایی برای شیءهای دستگاههای سیستمعامل نظیر رابط شبکهٔ eth0 یا پردازندهٔ گرافیکیِ CUDA با عنوان cuda0 باشند.
هنگامی که یک پیوند منفرد (خط افقی) در سمت راست یک پل PCI وجود دارد، به این معنی است که تنها یک دستگاه یا پل به گذرگاه ثانویهٔ PCI در پشت آن پل متصل است. هنگامی که یک خط عمودی وجود دارد، بدین معناست که چندین دستگاه و/یا پل به همان گذرگاه ثانویهٔ PCI متصل هستند.
نرخ دادهٔ (datarate) یک پیوند PCI ممکن است مستقیماً در زیر خط ترسیمشدهٔ آن (بر حسب GB/s) نوشته شود (در صورتی که سیستمعامل و/یا کتابخانهها قادر به گزارش آن اطلاعات باشند). این نرخ داده، سرعت در حال حاضر پیکربندیشدهٔ کل پیوند PCI است (مجموع پهنای باند تمامی laneهای PCI در آن پیوند). این مقدار ممکن است در حین اجرا تغییر کند، زیرا برخی دستگاهها قادرند در حالت بیکاری (idle) سرعت پیوندهای PCI خود را کاهش دهند.
چینش (LAYOUT)
در خروجی گرافیکی، lstopo از روشهای اکتشافی (heuristics) مستطیلی ساده استفاده میکند تا به نسبت ۴ به ۳ بین عرض و ارتفاع دست یابد. اگرچه سلسلهمراتب منابع به درستی منعکس میشود، سازماندهی فیزیکی دقیق (فاصلههای NUMA، حلقهها، گرافهای کامل و غیره) در حال حاضر نادیده گرفته میشود.
چینش یک سطح را میتوان با --vert، --horiz و --rect تغییر داد تا یک شیء والد مجبور شود فرزندانش را به ترتیب به روشهای عمودی، افقی یا مستطیلی بچیند.
موقعیت فرزندان Memory، I/O و Misc نسبت به سایر شیءهای فرزند را میتوان با استفاده از --children-order تغییر داد. این کار در عمل فرزندان را به چندین بخش تقسیم میکند. ابتدا چینش فرزندان درون هر بخش محاسبه میشود، پیش از آنکه بخشها درون (یا زیر) جعبهٔ والد قرار گیرند.
چینش عمودی/افقی/مستطیلی این بخشهای اضافی را نیز میتوان از طریق --children-order پیکربندی کرد. جعبهها در قالبهای خروجی گرافیکی بر اساس نوع شیء hwloc رنگآمیزی میشوند؛ برای نمونه، بستههای CPU سبز یا گرههای NUMA صورتی هستند. این مورد میتواند با --palette پیکربندی شود، همچنین بخش «رنگهای سفارشی» را در زیر ببینید. علاوه بر این رنگهای پیشفرض، CPUها و گرههای NUMA مجزا میتوانند برای نشان دادن ویژگیهای مختلف رنگآمیزی شوند:
- سبز
- توپولوژی آنگونه که توسط یک فرآیند مشخص دیده میشود گزارش شده است (گزینهٔ --pid را ببینید)، و CPU یا گره NUMA دادهشده در ماسک مقیدسازی (binding mask) حافظه یا CPU این فرآیند قرار دارد. این رنگ را میتوان با --binding-color تغییر داد.
- سفید
- واحد CPU یا گره NUMA در مجموعهٔ مجاز قرار دارد (زیر را ببینید). اگر توپولوژی آنگونه که توسط یک فرآیند مشخص دیده میشود گزارش شود (گزینهٔ --pid را ببینید)، شیء موردنظر در ماسک مقیدسازی این فرآیند نیز قرار ندارد.
- قرمز
- واحد CPU یا گره NUMA در مجموعهٔ مجاز قرار ندارد (زیر را ببینید). این رنگ را میتوان با --disallowed-color تغییر داد.
«مجموعهٔ مجاز» (allowed set) مجموعهای از CPUها یا گرههای NUMA است که فرآیند جاری اجازه دارد به آنها مقید (bind) شود. مجموعهٔ مجاز معمولاً یا از فرآیند والد به ارث میرسد یا توسط سیاستهای مدیریتی روی سیستم تنظیم میشود. ساختارهای cpuset در لینوکس نمونهای از محدود کردن مجموعهٔ مجاز برای یک فرآیند و فرزندان آن به مقداری کمتر از کل مجموعهٔ CPUها یا گرههای NUMA موجود در سیستم هستند.
بنابراین، فرآیندهای مختلف ممکن است CPUها یا گرههای NUMA متفاوتی در مجموعهٔ مجاز خود داشته باشند. از این رو، فراخوانی lstopo در بسترهای مختلف و/یا توسط کاربران متفاوت ممکن است رنگهای مختلفی را برای همان CPUهای مشخص نشان دهد (بهعنوان مثال، اجرای lstopo در یک بستر ممکن است یک CPU خاص را قرمز نشان دهد، اما اجرای lstopo در بستری دیگر ممکن است همان CPU را سفید نشان دهد).
برخی از حالتهای خروجی lstopo، مانند حالت کنسول (خروجی غیرگرافیکی پیشفرض)، به هیچ وجه از رنگها پشتیبانی نمیکنند. حالت کنسول در صورت فعال بودن پیامهای پرگو (verbose)، مشخصات فوق را با الحاق متن به خط مربوط به هر PU نمایش میدهد.
رنگهای سفارشی (CUSTOM COLORS)
رنگهای انواع مختلف جعبهها را میتوان با --palette پیکربندی کرد.
رنگ هر شیء در خروجی گرافیکی را نیز میتوان با مشخص کردن یک صفت اطلاعاتی "lstopoStyle" در آن شیء تحمیل کرد. مقدار آن باید یک فهرست جداشده با نقطه ویرگول (;) از "<attribute>=#rrggbb" باشد که در آن rr، gg و bb مؤلفههای RGB یک رنگ هستند، هرکدام بین 0 تا 255 در مبنای شانزده (00 تا ff). <attribute> میتواند شامل موارد زیر باشد:
- Background
- رنگ پسزمینهٔ جعبه شیء اصلی را تنظیم میکند.
- Text
- رنگ متنی را که نام شیء، نوع، نمایه (index) و غیره را نشان میدهد، تنظیم میکند.
- Text2
- رنگ متن اضافی کنار شیء را تنظیم میکند، بهعنوان مثال سرعت پیوند (link speed) در پشت یک پل PCI.
اطلاعات "lstopoStyle" را میتوان با hwloc-annotate یا با ()hwloc_obj_add_info به توپولوژیهای موقتاً ذخیرهشدهٔ XML افزود. برای نمونه، جهت نمایش تمام اشیاء هسته (core) به رنگ آبی (با نامهای سفید):
lstopo save.xml
hwloc-annotate save.xml save.xml core:all info lstopoStyle
"Background=#0000ff;Text=#ffffff"
lstopo -i save.xml
مثالها (EXAMPLES)
برای نمایش توپولوژی ماشین در حالت متنی:
$ lstopo-no-graphics
برای نمایش توپولوژی ماشین در حالت هنر اسکی (ascii-art):
$ lstopo-no-graphics -.ascii
برای نمایش در حالت گرافیکی (با فرض اینکه متغیر محیطی DISPLAY روی مقدار مناسبی تنظیم شده است):
$ lstopo
برای استخراج توپولوژی به یک فایل PNG:
$ lstopo file.png
برای برونبری یک فایل XML روی یک ماشین و سپس نمایش خروجی گرافیکی متناظر آن روی ماشینی دیگر:
$ machine1$ lstopo file.xml
<transfer file.xml from machine1 to machine2>
$ machine2$ lstopo --input file.xml
برای ذخیره توپولوژی ماشین فعلی در XML و بعداً بارگذاری سریعتر آن در حالی که همچنان به عنوان ماشین فعلی در نظر گرفته شود:
$ lstopo file.xml
<...>
$ lstopo --input file.xml --thissystem
برای محدود کردن یک توپولوژی XML تنها به پردازندههای فیزیکی 0، 1، 4 و 5:
$ lstopo --input file.xml --restrict 0x33 newfile.xml
برای محدود کردن یک توپولوژی XML تنها به گره numa که نمایه منطقی آن 1 است:
$ lstopo --input file.xml --restrict $(hwloc-calc --input file.xml node:1)
newfile.xml
مثالها با فیلتر کردن خروجی متنی (Examples with textual output filtering)
برای نمایش خلاصهای از توپولوژی:
$ lstopo -s
برای دریافت جزئیات بیشتر درباره توپولوژی:
$ lstopo -v
برای نمایش تنها هستهها:
$ lstopo --only core
برای نمایش cpusetها:
$ lstopo --cpuset
برای نمایش تنها cpusetهای package:
$ lstopo --only package --cpuset-only
مثالهای بیشتر (More examples)
شبیهسازی یک سلسلهمراتب ساختگی؛ این مثال با ۲ گره NUMA شامل ۲ واحد پردازنده نشان داده میشود:
$ lstopo --input "node:2 2"
برای افزودن انتشار و نگارش هسته به راهنمای گرافیکی:
$ lstopo --append-legend "Kernel release: $(uname -r)"
--append-legend "Kernel version: $(uname -v)"
برای نمایش محل مقید شدن یک فرایند و فرزندان آن با ترکیب با hwloc-ps:
$ hwloc-ps --pid-children 23 --lstopo-misc - | lstopo --misc-from -
همچنین ببینید (SEE ALSO)
hwloc(7), hwloc-info(1), hwloc-bind(1), hwloc-annotate(1), hwloc-ps(1), hwloc-gather-topology(1), hwloc-gather-cpuid(1)
| June 8, 2026 | 2.14.0 |