Giá tr? truy c?p hi?u su?t có th? b?t ng? nh?y v?t v? phía trư?c

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 274323 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TRI?U CH?NG

K?t qu? tr? l?i do các QueryPerformanceCounter ch?c năng có th? b?t ng? nh?y ti?p theo th?i gian. Nhu?n này có th? đ?i di?n cho m?t vài giây n?a.

NGUYÊN NHÂN

V?n đ? này x?y ra như là k?t qu? c?a m?t khi?m khuy?t thi?t k? trong dây k?t n?i ngo?i vi thành ph?n (PCI) đ? ngành công nghi?p tiêu chu?n ki?n trúc (ISA) c?u c?a m?t s? chipset. Cây c?u này thư?ng đư?c g?i là các Nam c?u. Nh?y x?y ra dư?i m?t PCI xe bu?t t?i n?ng, khi h? đi?u hành s? nh?n đư?c m?t lo?t các k?t qu? b?t ng? t? c?u. H? đi?u hành phát hi?n các k?t qu? b?t ng? và tính m?t s? ti?n thêm hi?u su?t truy c?p. Đi?u này gây ra k?t qu? tr? v? t? QueryPerformanceCounter đ? bư?c v? phía trư?c.

GI?I PHÁP

Các chương tr?nh nên xem cho m?t b?t ng? nh?y b?ng cách so sánh s? thay đ?i trong th?i gian đư?c xác đ?nh b?i k? ti?p cu?c g?i đ?n QueryPerformanceCounter v?i s? thay đ?i trong th?i gian đư?c xác đ?nh b?i k? ti?p cu?c g?i đ?n các GetTickCount ch?c năng. N?u có m?t bư?c nh?y đáng k? mà d?a trên QueryPerformanceCounter(), nhưng không có s? gia tăng tương t? mà d?a trên GetTickCount, sau đó nó có th? đư?c gi? đ?nh r?ng hi?u su?t truy c?p ch? nh?y lên phía trư?c. M?u m? ? ph?n cu?i c?a bài vi?t này ch?ng t? làm th? nào đ? làm đi?u này.

T?NH TR?NG

Hành vi c?a h? đi?u hành này là do thi?t k?. Hi?u su?t truy c?p đi?u ch?nh là c?n thi?t khi h? đi?u hành l?y đư?c d? li?u không đáng tin c?y t? chipset.

THÔNG TIN THÊM

Khi?m khuy?t thi?t k? trong v?ng m?t ph?n c?ng chip đư?c g?i là errata. Nh?ng khi?m khuy?t thi?t k? có th? gây ra s?n ph?m đ? đi ch?ch kh?i thông s? k? thu?t đư?c xu?t b?n. Cho thông tin v? errata trong c? th? chipset, xin vui l?ng liên h? v?i đ?i l? ph?n c?ng cho chipset.

M?t máy PCI các thành ph?n đư?c xác đ?nh b?i m?t đ?nh danh PCI trong v?ng ch?a khóa sau trong Windows registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI
Tên c?a subkeys có d?ng sau
VEN_xxxx& DEV_yyyy& SUBSYS_aaaaaaaa& REV_BB
nơi xxxx:yyyy đ?i di?n cho các đ?nh danh PCI.

Hi?n nay, khoai tây chiên v?i đ?nh danh PCI sau đư?c bi?t là tri?n l?m m?t bư?c nh?y trong giá tr? truy c?p hi?u su?t:
Thu g?n b?ng nàyBung r?ng b?ng này
PCI IDĐ?i l? ph?n c?ng
1039:0530Silic tích h?p h? th?ng (SiS)
1039:0620Silic tích h?p h? th?ng (SiS)
10B9:0533Acer Labs, Inc (ALi)
10B9:1533Acer Labs, Inc (ALi)
1106:0596Thông qua công ngh?, Inc (thông qua)
1106:0686Thông qua công ngh?, Inc (thông qua)
1166:004FCông ty c? ph?n Serverworks
1166:0050Công ty c? ph?n Serverworks
8086:7110T?p đoàn Intel
Danh sách này s? đư?c C?p Nh?t theo Microsoft quan sát hành vi trong chipset khác.

M?u m?

M? m?u sau đó ch?ng t? phương pháp mô t? ? trên đ? phát hi?n hi?u su?t truy c?p nh?y. N?u các m? ch?y trên m?t máy tính v?i PIIX4 chipset, ví d?, ?ng d?ng đi?u khi?n này s? r?i r?c báo nh?y trong giá tr? truy c?p hi?u su?t.
#include <windows.h>
#include <stdio.h>

void main() {

   LARGE_INTEGER liFrequency;
   LARGE_INTEGER liCurrent;
   LARGE_INTEGER liLast;
   LARGE_INTEGER liRecent[10];
   DWORD dwCurrent;
   DWORD dwLast;
   DWORD dwPerfElapsed;
   DWORD dwTickElapsed;
   int i = 0;
   int j;

   // Save the performance counter frequency for later use.
   if (!QueryPerformanceFrequency(&liFrequency))
      printf("QPF() failed with error %d\n", GetLastError());

   // Query the performance counter value and tick count.
   dwCurrent = GetTickCount();
   if (!QueryPerformanceCounter(&liCurrent))
      printf("QPC() failed with error %d\n", GetLastError());

   liLast = liCurrent;
   dwLast = dwCurrent;

   while (TRUE) {

      // Query the performance counter value and tick count.
      if (!QueryPerformanceCounter(&liCurrent))
         printf("QPC() failed with error %d\n", GetLastError());
      dwCurrent = GetTickCount();

      // Store the performance counter value in the list of recent values.
      liRecent[i].QuadPart = liCurrent.QuadPart;
      i = (i+1) % 10;

      // Convert difference in performance counter values to milliseconds.
      dwPerfElapsed = (DWORD) (((liCurrent.QuadPart - liLast.QuadPart) 
            * 1000) / liFrequency.QuadPart);
      
      dwTickElapsed = dwCurrent - dwLast;

      // Check for a discrepancy greater than 500 milliseconds.
      if (abs(dwPerfElapsed - dwTickElapsed) > 500) { 

         // Print the previous 9 performance-counter values.
         for (j=9; j>0; j--) {
            printf("      Previous %d:  %I64X\n", j, liRecent[i].QuadPart);
            i = (i+1) % 10;
         }

         // Print the leap value.
         printf( "LEAP: Current:     %I64X  delta = %I64X\n", 
               liCurrent.QuadPart, liCurrent.QuadPart - liLast.QuadPart);
         
         // Retrieve and print the next 9 performance-counter values.
         for (j=1; j<=9; j++) {
            
            QueryPerformanceCounter(&liCurrent);
            printf("      Next     %d:  %I64X\n", j, liCurrent.QuadPart);
            
            liRecent[i].QuadPart = liCurrent.QuadPart;
            i = (i+1) % 10;
         }

         printf("\n");
      }

      liLast = liCurrent;
      dwLast = dwCurrent;
   }

   return;
}

Thu?c tính

ID c?a bài: 274323 - L?n xem xét sau cùng: 22 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Win32 Application Programming Interface
T? khóa: 
kbapi kbkernbase kbperfmon kbprb kbmt KB274323 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:274323
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com