Ai đó có thể xin vui lòng cho tôi biết lý do tại sao những điều sau đây có thể xảy ra:lạ chậm xuống của allocs C++
Tôi có 2 máy tính:
- comp làm việc của tôi
- server
tôi duy trì Chương trình C++ (msvc 2005 C++ được biên dịch) hoạt động quá chậm chỉ trên máy chủ, nhưng không phải trên comp của tôi.
Tôi đã tiến hành đo (GetThreadTimes và vân vân) và chắc chắn có thể nói rằng địa điểm hẹp - cấp phát bộ nhớ (mới/malloc). Và nó chỉ xảy ra trên máy chủ!
Tôi có thể tuyên bố rằng nó xảy ra do phân mảnh bộ nhớ vì Ví dụ máy chủ lần đầu của chương trình hoạt động tốt, thời gian mất bắt đầu trên allocs chỉ sau khi nạp lại dữ liệu vào bộ nhớ (1-1.5 triệu allocs/giải phóng).
Tôi sẽ không ngạc nhiên nếu tôi thấy cùng một hành vi do bộ nhớ phân mảnh trên cả hai máy tính (máy tính và máy chủ của tôi) nhưng những gì tôi thấy là: 1). trên phân bổ comp của tôi mất ~ 5% thời gian (không chính xác nhưng đôi khi như thế) 2). trên máy chủ, các allocs này mất ~ 75% thời gian
điều này có thể xảy ra như thế nào? Điều gì có thể làm chậm phân bổ C++ trên máy tính Server, trong khi đó là OK cho máy trạm của tôi. Nơi nào có thể khác biệt? Có lẽ một cái gì đó của nó được kết nối với các chức năng quản lý bộ nhớ cấp hệ điều hành? vì trình quản lý cấp C++ giống nhau trong cả hai trường hợp.
Đây là cả hai cấu hình:
1). Máy tính của tôi (nơi allocs mất ~ 5%):
OS Name: Microsoft Windows 7 Enterprise
OS Version: 6.1.7600 N/A Build 7600
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Workstation
OS Build Type: Multiprocessor Free
Registered Owner: Windows User
Original Install Date: 16/09/2011, 19:37:43
System Boot Time: 05/04/2013, 11:58:11
System Model: 7304A58
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 23 Stepping 10 GenuineIntel ~2642 Mhz
Windows Directory: C:\Windows
System Directory: C:\Windows\system32
Boot Device: \Device\HarddiskVolume2
System Locale: ru;Russian
Input Locale: en-us;English (United States)
Total Physical Memory: 4,061 MB
Available Physical Memory: 872 MB
Virtual Memory: Max Size: 8,121 MB
Virtual Memory: Available: 4,579 MB
Virtual Memory: In Use: 3,542 MB
Page File Location(s): C:\pagefile.sys
2). Máy chủ (trong đó allocs chiếm ~ 75%):
OS Name: Microsoft(R) Windows(R) Server 2003, Enterprise Edition
OS Version: 5.2.3790 Service Pack 2 Build 3790
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Server
OS Build Type: Multiprocessor Free
Original Install Date: 11/12/2008, 01:22:57
System Up Time: 1 Days, 8 Hours, 35 Minutes, 52 Seconds
System Manufacturer: HP
System Model: ProLiant BL685c G5
System Type: X86-based PC
Processor(s): 4 Processor(s) Installed.
[01]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
[02]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
[03]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
[04]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
Windows Directory: C:\WINNT
System Directory: C:\WINNT\system32
Boot Device: \Device\HarddiskVolume1
Total Physical Memory: 65,534 MB
Available Physical Memory: 61,284 MB
Page File: Max Size: 97,696 MB
Page File: Available: 93,445 MB
Page File: In Use: 4,251 MB
Page File Location(s): C:\pagefile.sys
D:\pagefile1\pagefile.sys
D:\pagefile2\pagefile.sys
D:\pagefile3\pagefile.sys
D:\pagefile4\pagefile.sys
D:\pagefile5\pagefile.sys
D:\pagefile6\pagefile.sys
D:\pagefile7\pagefile.sys
Sẽ biết ơn vì đã làm rõ vấn đề này.
Bạn đang sử dụng cùng một tập dữ liệu trên cả hai máy? – nneonneo
không, nhưng có thể so sánh. comp của tôi có ~ 260 000 mục tại các công trình lưu loát, máy chủ comp gặp khó khăn tại ~ 350 000 và nhiều mặt hàng thậm chí nó bắt đầu làm việc chăm chỉ ngay cả khi tải 100 000 000 mục. –