Спорідненість процесора, або закріплення ЦП або «Спорідненість кешу», дозволяє зв'язування та розв'язування процесу чи потоку до центрального процесора (ЦП) чи діапазону ЦП, так що процес або потік виконуватиметься тільки на призначених ЦП, а не на будь-якому. Це можна розглядати як модифікацію рідного алгоритму планування центральної черги у симетричній багатопроцесорній операційній системі. Кожний елемент у черзі має тег, що позначає його рідний процесор. На час виділення ресурсів кожне завдання призначається своєму рідному процесору в перевазі до інших.
Спорідненість процесора користується тим, що залишки процесу, який працює на даному процесорі, можуть залишатися у стані цього процесора (наприклад, дані в кеш-пам'яті) після запуску іншого процесу на цьому процесорі. Планування виконання цього процесу на цьому ж процесорі поліпшує його продуктивність шляхом зниження подій, що впливають на продуктивність, як-от пропуски кешу. Практичним прикладом спорідненості процесора є виконання багатьох примірників непотокового застосунку, як-от деяке програмне забезпечення рендерингу графіки.
Реалізації алгоритму планування відрізняються за дотриманням спорідненості процесора. За певних обставин, деякі реалізації дозволятимуть зміну завдання на інший процесор, якщо це призведе до вищої ефективності. Наприклад, коли два інтенсивні до процесора завдання (А і Б) споріднені з одним процесором, а інший залишається невикористаним, більшість планувальників зсуватимуть завдання Б на другий процесор задля максимізації процесорного використання. Потім завдання Б набуде спорідненість із другим процесором, а завдання А продовжуватиме мати спорідненість із початковим процесором.
Використання
Спорідненість процесора може ефективно зменшувати проблеми кешу, але вона не зменшує постійну проблему балансування навантаження. Також зверніть увагу, що спорідненість процесора ускладнюється в системах із нерівномірними архітектурами. Наприклад, система з двома двоядерними гіперпотоковими ЦП є проблемою для алгоритму планування.
Повна спорідненість між двома віртуальними ЦП реалізується на одному ядрі через гіперпотоковість, часткова спорідненість між двома ядрами на одному фізичному процесорі (оскільки ядра ділять деякий, але не весь, кеш), але немає спорідненості між окремими фізичними процесорами. Оскільки інші ресурси також діляться, спорідненість процесора сама по собі не може використовуватися як основа диспетчеризації ЦП. Якщо процес нещодавно запускався на одному віртуальному гіперпотоковому ЦП у даному ядрі, і наразі цей віртуальний ЦП зайнятий, але не його партнерський ЦП, то спорідненість кешу запропонувала би, що процес слід відправити на бездіяльний партнерський ЦП. Однак, два віртуальні ЦП змагаються за по суті всі обчислювальні, ресурси кешу та пам'яті. В даній ситуації, як правило, буде ефективніше відправити процес на інше ядро чи ЦП, за їх доступності. Це може накласти штраф, коли процес повторно наповнює кеш, але загальна продуктивність може бути вищою, оскільки процес не матиме змагатися за ресурси всередині ЦП.
Конкретні операційні системи
В Linux спорідненість ЦП процесу може змінюватися програмою taskset(1) і системним викликом sched_setaffinity(2). Спорідненість потоку може змінюватися однією з бібліотечних функцій: pthread_setaffinity_np(3) або pthread_attr_setaffinity_np(3).
У системах SGI dplace зв'язує процес із набором ЦП.
NetBSD 5.0, FreeBSD 7.2 і пізніші версій можуть використовувати pthread_setaffinity_np і pthread_getaffinity_np. У NetBSD psrset використовується для встановлення спорідненості потоку певному набору ЦП. У FreeBSD утиліта cpuset використовується для створення наборів ЦП і призначення процесів цим наборам.
У Windows NT та її наступниках спорідненість ЦП потоків і процесів може встановлюватися окрема шляхом використання викликів API SetThreadAffinityMask і SetProcessAffinityMask або через інтерфейс Диспетчера завдань (тільки для спорідненості процесу).
macOS виставляє API спорідненості, який надає ядру підказки щодо планування потоками згідно з наборами відповідності.
У Solaris можливо керувати зв'язуванням процесів і LWP з процесором, використовуючи програму pbind(1). Для програмного керування спорідненістю можна використовувати processor_bind(2). Доступні загальніші інтерфейси на кшталт pset_bind(2) або lgrp_affinity_get(3LGRP) із використанням понять набору процесорів і місцевих груп.
Див. також
- [en]
Примітки
- (2005). Багатопроцесорні та розподілені системи. У Згуровський, М. З. (ред.). Операційні системи (підручник для вищих навчальних закладів). Інформатика (українською) . К.: Видавнича група BHV. с. 524. ISBN . Процитовано 15 червня 2019.
- White Paper: Processor Affinity (PDF). — TMurgent Technologies, . з джерела 8 червня 2021. Процитовано 15 червня 2019.
- Linux Programmer's – User Commands –
- . techpubs.sgi.com (англійською) . Silicon Graphics. Архів оригіналу за 1 липня 2017. Процитовано 6 липня 2007.
- NetBSD Library Functions –
- NetBSD System Manager's –
- –
- SetThreadAffinityMask function (winbase.h). [en]. Microsoft. 5 грудня 2018. Процитовано 15 червня 2019.
- SetProcessAffinityMask function (winbase.h). [en]. Microsoft. 5 грудня 2018. Процитовано 15 червня 2019.
- . Developer.apple.com (англійською) . Apple. Архів оригіналу за 2 червня 2012. Процитовано 15 червня 2019.
- . Solaris man page (англійською) . Oracle Corporation. Архів оригіналу за 25 лютого 2021. Процитовано 15 червня 2019.
- . Solaris man page (англійською) . Oracle Corporation. 5 листопада 2002. Архів оригіналу за 3 вересня 2016. Процитовано 15 червня 2019.
- . Solaris man pages (англійською) . Oracle Corporation. Архів оригіналу за 20 січня 2022. Процитовано 15 червня 2019.
- . Memory and Thread Placement Optimization Developer's Guide (англійською) . Oracle Corporation. Архів оригіналу за 10 червня 2016. Процитовано 15 червня 2019.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Sporidnenist procesora abo zakriplennya CP abo Sporidnenist keshu dozvolyaye zv yazuvannya ta rozv yazuvannya procesu chi potoku do centralnogo procesora CP chi diapazonu CP tak sho proces abo potik vikonuvatimetsya tilki na priznachenih CP a ne na bud yakomu Ce mozhna rozglyadati yak modifikaciyu ridnogo algoritmu planuvannya centralnoyi chergi u simetrichnij bagatoprocesornij operacijnij sistemi Kozhnij element u cherzi maye teg sho poznachaye jogo ridnij procesor Na chas vidilennya resursiv kozhne zavdannya priznachayetsya svoyemu ridnomu procesoru v perevazi do inshih Sporidnenist procesora koristuyetsya tim sho zalishki procesu yakij pracyuye na danomu procesori mozhut zalishatisya u stani cogo procesora napriklad dani v kesh pam yati pislya zapusku inshogo procesu na comu procesori Planuvannya vikonannya cogo procesu na comu zh procesori polipshuye jogo produktivnist shlyahom znizhennya podij sho vplivayut na produktivnist yak ot propuski keshu Praktichnim prikladom sporidnenosti procesora ye vikonannya bagatoh primirnikiv nepotokovogo zastosunku yak ot deyake programne zabezpechennya renderingu grafiki Realizaciyi algoritmu planuvannya vidriznyayutsya za dotrimannyam sporidnenosti procesora Za pevnih obstavin deyaki realizaciyi dozvolyatimut zminu zavdannya na inshij procesor yaksho ce prizvede do vishoyi efektivnosti Napriklad koli dva intensivni do procesora zavdannya A i B sporidneni z odnim procesorom a inshij zalishayetsya nevikoristanim bilshist planuvalnikiv zsuvatimut zavdannya B na drugij procesor zadlya maksimizaciyi procesornogo vikoristannya Potim zavdannya B nabude sporidnenist iz drugim procesorom a zavdannya A prodovzhuvatime mati sporidnenist iz pochatkovim procesorom VikoristannyaSporidnenist procesora mozhe efektivno zmenshuvati problemi keshu ale vona ne zmenshuye postijnu problemu balansuvannya navantazhennya Takozh zvernit uvagu sho sporidnenist procesora uskladnyuyetsya v sistemah iz nerivnomirnimi arhitekturami Napriklad sistema z dvoma dvoyadernimi giperpotokovimi CP ye problemoyu dlya algoritmu planuvannya Povna sporidnenist mizh dvoma virtualnimi CP realizuyetsya na odnomu yadri cherez giperpotokovist chastkova sporidnenist mizh dvoma yadrami na odnomu fizichnomu procesori oskilki yadra dilyat deyakij ale ne ves kesh ale nemaye sporidnenosti mizh okremimi fizichnimi procesorami Oskilki inshi resursi takozh dilyatsya sporidnenist procesora sama po sobi ne mozhe vikoristovuvatisya yak osnova dispetcherizaciyi CP Yaksho proces neshodavno zapuskavsya na odnomu virtualnomu giperpotokovomu CP u danomu yadri i narazi cej virtualnij CP zajnyatij ale ne jogo partnerskij CP to sporidnenist keshu zaproponuvala bi sho proces slid vidpraviti na bezdiyalnij partnerskij CP Odnak dva virtualni CP zmagayutsya za po suti vsi obchislyuvalni resursi keshu ta pam yati V danij situaciyi yak pravilo bude efektivnishe vidpraviti proces na inshe yadro chi CP za yih dostupnosti Ce mozhe naklasti shtraf koli proces povtorno napovnyuye kesh ale zagalna produktivnist mozhe buti vishoyu oskilki proces ne matime zmagatisya za resursi vseredini CP Konkretni operacijni sistemiV Linux sporidnenist CP procesu mozhe zminyuvatisya programoyu taskset 1 i sistemnim viklikom sched setaffinity 2 Sporidnenist potoku mozhe zminyuvatisya odniyeyu z bibliotechnih funkcij pthread setaffinity np 3 abo pthread attr setaffinity np 3 U sistemah SGI dplace zv yazuye proces iz naborom CP NetBSD 5 0 FreeBSD 7 2 i piznishi versij mozhut vikoristovuvati pthread setaffinity np i pthread getaffinity np U NetBSD psrset vikoristovuyetsya dlya vstanovlennya sporidnenosti potoku pevnomu naboru CP U FreeBSD utilita cpuset vikoristovuyetsya dlya stvorennya naboriv CP i priznachennya procesiv cim naboram U Windows NT ta yiyi nastupnikah sporidnenist CP potokiv i procesiv mozhe vstanovlyuvatisya okrema shlyahom vikoristannya viklikiv API SetThreadAffinityMask i SetProcessAffinityMask abo cherez interfejs Dispetchera zavdan tilki dlya sporidnenosti procesu macOS vistavlyaye API sporidnenosti yakij nadaye yadru pidkazki shodo planuvannya potokami zgidno z naborami vidpovidnosti U Solaris mozhlivo keruvati zv yazuvannyam procesiv i LWP z procesorom vikoristovuyuchi programu pbind 1 Dlya programnogo keruvannya sporidnenistyu mozhna vikoristovuvati processor bind 2 Dostupni zagalnishi interfejsi na kshtalt pset bind 2 abo lgrp affinity get 3LGRP iz vikoristannyam ponyat naboru procesoriv i miscevih grup Div takozh en Primitki 2005 Bagatoprocesorni ta rozpodileni sistemi U Zgurovskij M Z red Operacijni sistemi pidruchnik dlya vishih navchalnih zakladiv Informatika ukrayinskoyu K Vidavnicha grupa BHV s 524 ISBN 966552157 8 Procitovano 15 chervnya 2019 White Paper Processor Affinity PDF TMurgent Technologies z dzherela 8 chervnya 2021 Procitovano 15 chervnya 2019 a rel nofollow class external text href http man7 org linux man pages man1 taskset 1 html taskset 1 a Linux Programmer s User Commands techpubs sgi com anglijskoyu Silicon Graphics Arhiv originalu za 1 lipnya 2017 Procitovano 6 lipnya 2007 a rel nofollow class external text href http netbsd gw com cgi bin man cgi pthread setaffinity np 3 NetBSD current pthread setaffinity np 3 a NetBSD Library Functions a rel nofollow class external text href http netbsd gw com cgi bin man cgi psrset 8 NetBSD current psrset 8 a NetBSD System Manager s Shablon Man FreeBSD cpuset SetThreadAffinityMask function winbase h en Microsoft 5 grudnya 2018 Procitovano 15 chervnya 2019 SetProcessAffinityMask function winbase h en Microsoft 5 grudnya 2018 Procitovano 15 chervnya 2019 Developer apple com anglijskoyu Apple Arhiv originalu za 2 chervnya 2012 Procitovano 15 chervnya 2019 Solaris man page anglijskoyu Oracle Corporation Arhiv originalu za 25 lyutogo 2021 Procitovano 15 chervnya 2019 Solaris man page anglijskoyu Oracle Corporation 5 listopada 2002 Arhiv originalu za 3 veresnya 2016 Procitovano 15 chervnya 2019 Solaris man pages anglijskoyu Oracle Corporation Arhiv originalu za 20 sichnya 2022 Procitovano 15 chervnya 2019 Memory and Thread Placement Optimization Developer s Guide anglijskoyu Oracle Corporation Arhiv originalu za 10 chervnya 2016 Procitovano 15 chervnya 2019