🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #205154

Re: rdtsc a kilka rdzeni

#205154
From: Borneq
Date: Fri, 19 Apr 2013 20:16
37 lines
3094 bytes
Użytkownik "M.M." <mmarszik@gmail.com> napisał w wiadomości 
news:4e868d51-743d-4a33-af8c-2da729bf9d6a@googlegroups.com...
On Friday, April 19, 2013 11:15:24 AM UTC+2, Borneq wrote:
> Od czasu procesora Pentium mamy interesująca instrukcję rdtsc, która 
> mierzy
> czas ekstremalnie dokładnie - co do taktu i wywołanie jej zabiera bardzo
> mało czasu w porównaniu np. z QueryPerformanceCounter.
> Jednak na dwurdzeniowym procesorze uzyskiwałem bzdurne wyniki. Okazało się
> niestety, że każdy rdzeń ma własny licznik (?). Można było to obejść
> zmuszając testowy program do pracy na jednym rdzeniu
> (SetProcessAffinityMask), co jednak powoduje że taki profilowany program 
> nie
> może działać z pełną wydajnością, gdy ma kilka wątków.
> Pytanie: czy takie zachowanie rdtsc zależy także od syetemu? bo zdaje się 
> że
> w Windows 8 a nawet w XP obecnie, po poprawkach już licznik rdtsc działał
> dobrze nawet na kilku rdzeniach, ale nie jestem tego pewien.

> A jakby przypisać proces na chama do rdzenia?

Właśnie to robię przez SetProcessAffinityMask,ale wtedy wszystkie wątki tego 
procesu działają na jednym rdzeniu, co nie pozwala na pełną prędkość.
Nie wiem jak mają się do tego sprawy systemu, bo zdaje się, że ostatnio gdy 
testowałem (obecnie nie mam na czym, piszę z jednordzeniowego laptopa) to 
nawet na dwóch rdzeniach się dobrxze zachowywał, choć to mogło być sprawą 
przypadku.
Chodzi o to, że nawet gdy mamy jednowątkowy proces, a choćby kilkuwątkowy, 
to dwa odczyty rdtsc przeważnie są blisko siebie i w jednym wątku. I teraz, 
czy system operacyjny będzie cały czas jedne wątek przydzielał do jedneog 
rdzenia/procesora? Może poprzednio nie przydzielał a teraz przydziela, nie 
jestem tego pewien.
ALE
Pomyślałem teraz, że nie potrzebnie używałem SetProcessAffinityMask, można 
przecież użyć
SetThreadAffinityMask dla wątku badanego a inne wątki będą może na innych 
rdzeniach i wtedy można profilować program wielowątkowy bez ograniczania się 
do jednego rdzenia - jeden wątek i tak jest ograniczony do jednego. 
Technical Details
Message-ID: <kks8nh$avj$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <kkr1vd$3rv$1@node2.news.atman.pl> <4e868d51-743d-4a33-af8c-2da729bf9d6a@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: "Borneq" <borneq@antyspam.hidden.pl>
Newsgroups: pl.comp.programming
Subject: Re: rdtsc a kilka rdzeni
Date: Fri, 19 Apr 2013 22:16:48 +0200
Organization: ATMAN - ATM S.A.
Lines: 38
Message-ID: <kks8nh$avj$1@node2.news.atman.pl>
References: <kkr1vd$3rv$1@node2.news.atman.pl> <4e868d51-743d-4a33-af8c-2da729bf9d6a@googlegroups.com>
NNTP-Posting-Host: 91.239.205.62
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1366402609 11251 91.239.205.62 (19 Apr 2013 20:16:49 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Fri, 19 Apr 2013 20:16:49 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit