Invariant TSC
Invariant TSC апісвае лічыльнік пазнак часу, хуткасць якога застаецца пастаяннай ва ўсіх архітэктурных станах харчавання і частаты, ахопленых гэтай функцыяй. Гэта не з'яўляецца прамым вымярэннем бягучай частаты ядра.
Што вам трэба ведаць
Invariant TSC апісвае лічыльнік пазнак часу, хуткасць якога застаецца пастаяннай ва ўсіх архітэктурных станах харчавання і частаты, ахопленых гэтай функцыяй. Гэта не з'яўляецца прамым вымярэннем бягучай частаты ядра.
Як гэта працуе
Лічыльнік пазнак часу павялічваецца з хуткасцю, вызначанай платформай. Інварыянтныя паводзіны аддзяляюць гэтую хуткасць ад змен працоўнай частаты ядра. Пераўтварэнне цікаў у мінулы час патрабуе сапраўднага эталона частаты, у той час як параўнанне значэнняў паміж рознымі працэсарамі або віртуальнымі машынамі таксама патрабуе сінхранізацыі і гарантый віртуалізацыі.
Дзе гэта карысна
Асяроддзе выканання можа выкарыстоўваць прыдатны лічыльнік як частку сваёй рэалізацыі вымярэння часу з высокім разрозненнем. Дзяленне рознасці лічыльніка для кароткай нагрузкі на намінальнае значэнне ГГц працэсара можа быць памылковым, паколькі хуткасць TSC і частата выконваючага ядра з'яўляюцца рознымі велічынямі.
Як праверыць падтрымку і актыўнасць
CPUID.80000007H:EDX біт 8 пералічвае інварыянтны TSC у адпаведнасці з вызначэннем адпаведнай архітэктуры. Для звычайнага вымярэння часу аддавайце перавагу падтрымоўванаму аперацыйнай сістэмай манатоннаму гадзінніку, паколькі ён можа ўлічваць палітыку платформы і віртуалізацыі.
Выбірайце гадзіннік у залежнасці ад задачы: пройдзены час, працэсарны час патоку і такты з'яўляюцца рознымі вымярэннямі. Інтэрфейсы гадзінніка аперацыйнай сістэмы ўключаюць у сябе палітыку платформы, якую прамое счытванне інструкцыі можа абыйсці.
Чаго гэта функцыя не гарантуе
Інварыянтнасць сама па сабе не забяспечвае сінхранізацыю паміж сокетамі, манатонныя паводзіны пры міграцыі VM, серыялізацыю вакол вымяраных інструкцый або адсутнасць затрымак планавальніка. Сырое значэнне лічыльніка не з'яўляецца працэнтам выкарыстання CPU.
Сумяшчальнасць і прадукцыйнасць на практыцы
Бенчмарк таксама патрабуе карэктных меж кампілятара, прагрэву, рэпрэзентатыўных даных і разумення міграцыі і планавання. Паўтарэнне дрэнна спарадкаванага вымярэння не робіць яго дакладным. Паведамляйце пра асяроддзе і нявызначанасць разам з любым вынікам.
Практычны чэк-ліст для праверкі
- Зафіксуйце дакладную мадэль працэсара або платформы, а таксама задзейнічаныя версіі праграмы, АС і асяроддзя выканання. Захавайце дакладную фармулёўку памылкі або патрабавання.
- Звярніцеся да дакументацыі вытворцы для гэтай канкрэтнай мадэлі, затым праверце фактычныя магчымасці і ўключаны стан у асяроддзі, дзе выконваецца праграма.
- Супастаўце кожнае патрабаванне выбранага выканальнага файла або бэкэнда. Аналагічнай назвы функцыі, псеўданіма або агульнай назвы тэхналогіі недастаткова.
- Пацвердзіце, што праграма выбрала патрэбную рэалізацыю. Выкарыстоўвайце яе задакументаваныя сродкі дыягностыкі і падтрымліваемы запасны варыянт, калі патрабаванні не выконваюцца.
- Уносьце па адным падтрымліваемым змяненні за раз і паўтарайце тую ж нагрузку. Захоўвайце зыходную канфігурацыю і магчымасць адкату.
Калі функцыя пазначана, але праграмнае забеспячэнне не можа яе выкарыстоўваць
Пачніце з канкрэтнага кампанента, які выклікае збой. Апаратная база даных апісвае зафіксаваныя магчымасці; аперацыйная сістэма або гіпервізар могуць прадастаўляць іншае фактычнае асяроддзе. Памылка недапушчальнай інструкцыі (illegal instruction) таксама патрабуе даследавання канкрэтнай інструкцыі, якая выклікала збой, і зборкі бінарнага файла, паколькі пашкоджанне даных або іншая непадтрымліваемая інструкцыя могуць выклікаць аналагічны сімптом.
Усталюйце версію праграмы, драйвера або асяроддзя выканання, якая падтрымліваецца для дадзенай платформы, і пры неабходнасці выкарыстоўвайце задакументаваную вытворцам базавую або запасную зборку. Абнаўленне ПЗ не можа стварыць інструкцыю, якой няма ў працэсары. Змяненні ў мікрапраграме (firmware) і палітыках бяспекі павінны адпавядаць працэдурам вытворцы сістэмы і плану аднаўлення, а не агульным рэцэптам аптымізацыі.
Крыніцы і межы прымянення гэтага тлумачэння
Intel 64 and IA-32 Architectures Software Developer's Manual
Гэтыя даведнікі вызначаюць архітэктурныя паводзіны і патрабаванні да праграмнага забеспячэння. Яны не пацвярджаюць незалежна кожнае значэнне функцыі на звязанай старонцы мадэлі абсталявання. Для праверкі падтрымкі мадэллю выкарыстоўвайце даныя вытворцы на адпаведнай старонцы і правярайце фактычную канфігурацыю сістэмы. Гэты артыкул не змяшчае вынікаў тэсціравання (benchmark), сертыфікацыі або даты незалежнага агляду.
Крыніцы і праверка
Рэдакцыйная прыналежнасць: Feex. Дата незалежнай праверкі не зафіксавана. Як мы даследуем.
- Intel 64 and IA-32 Architectures Software Developer's Manual · Тамы 1 і 2 апісваюць названыя сямействы інструкцый і CPUID; Том 3 апісвае стан, старонкавую арганізацыю памяці, VMX і элементы кіравання абаронай. Архітэктурная дакументацыя не пацвярджае падтрымку канкрэтнай мадэлі.
Ці быў гэты артыкул карысным?
Дастаткова адказаць "так" або "не". Выберыце прычыну, калі хочаце, або дадайце кароткую нататку.
Дзякуй. Гэта дапамагае нам паляпшаць гэтую старонку.