Tại sao CPU của tôi không hoạt động ở mức tối đa ngay cả khi ứng dụng của tôi (sử dụng tài nguyên của CPU) bị chậm?


30

Tại sao CPU của tôi không bao giờ hoạt động tối đa ngay cả khi ứng dụng của tôi chiếm tới 40% CPU (nhưng 30 - 40% CPU vẫn không hoạt động), bị lag?

Có nghĩa là:

  1. Có một cách để buộc CPU chạy ở mức 100%
  2. CPU được sản xuất theo cách đó và điều duy nhất tôi có thể làm là mua phần cứng mới.
  3. Hạn chế nằm ở ứng dụng và độ trễ sẽ không cải thiện ngay cả với CPU tốt hơn. (Giả sử ứng dụng này hoàn hảo, điều tôi hỏi là liệu phần mềm có chạy theo cách đó không?)
  4. Thứ gì khác.

4
Tôi hiểu OP đang gặp phải vấn đề gì Cuối cùng tôi ngồi trong 12 phút cho đến khi tôi có thể trở lại làm việc.
SiXandSeven8th

10
Bất kỳ ứng dụng nào sử dụng tối đa một trong số một số tài nguyên được chia sẻ trong máy tính (CPU, bộ nhớ, bộ nhớ hoặc mạng) đều có thể làm cho toàn bộ hệ thống chậm, mặc dù các tài nguyên được chia sẻ còn lại có dung lượng không sử dụng.
Kẻ giả mạo Twisty

78
Tôi đã lập trình được 25 năm. Và tôi có thể đảm bảo với bạn - đây không phải là một âm mưu. Rất hiếm khi tìm thấy các ứng dụng mà CPU là nút cổ chai, hầu hết các ứng dụng đang chờ đợi những thứ khác như ổ cứng, RAM hoặc mạng.
Contango

10
Giả sử bạn đang làm một số công việc tính toán - làm thuế của bạn, giả sử. Nếu bạn không làm việc trong khi bạn đang chờ các biểu mẫu thuế của bạn đến trong thư thì bạn sẽ không làm việc trong một thời gian dài. Ứng dụng Laggy thường được viết xấu; họ chặn luồng UI trên các hoạt động có độ trễ cao như IO hoặc ổ đĩa mạng không liên quan gì đến CPU và do đó CPU không hoạt động và ứng dụng không phản hồi. Bắt CPU nhanh hơn không giúp được gì; điều đó chỉ đưa bạn đến việc chặn các hoạt động có độ trễ cao nhanh hơn .
Eric Lippert

3
@TwistyImpersonator: Đó là một sự tương tự tốt cho các chương trình đa luồng có sự tranh chấp cao. Đôi khi chúng ta thấy rằng một chương trình đa luồng sẽ chạy chậm hơn trên CPU nhanh hơn vì CPU đang đưa nhiều luồng vào trạng thái bị chặn nhanh hơn CPU chậm hơn. Nếu mọi tài xế ở thành phố New York được tặng xe nhanh hơn gấp 10 lần vào ngày mai, thời gian đi lại sẽ không được cải thiện . Họ sẽ trở nên tồi tệ hơn.
Eric Lippert

Câu trả lời:


94

Có lẽ bạn đang chạy các ứng dụng đơn luồng chỉ có thể sử dụng tối đa một lõi CPU. Do 100% của một lõi nhỏ hơn 100% dung lượng của CPU đa lõi, nên tổng mức sử dụng CPU không đạt 100%.

Bạn có thể xác nhận điều này bằng cách xem việc sử dụng lõi riêng lẻ trong Trình quản lý tác vụ. Tìm kiếm các lõi đơn đang tiếp cận việc sử dụng tối đa.


24
Do chuyển đổi, bạn sẽ chỉ thấy việc sử dụng phân tán tổng hợp cho việc sử dụng một lõi. Về cơ bản, ứng dụng sử dụng chính xác một lõi, nhưng nó nhảy xung quanh giữa các lõi, vì vậy mỗi lõi trung bình lên tới 1 / n.
Aganju

62
Tôi cũng có thể nói rằng cpu thực sự không phải là nút cổ chai.

16
Tôi mơ hồ nhớ lại Pháo đài Lùn nổi tiếng đang tắc nghẽn 100% một lõi, vì vậy anh ta bắt đầu rút các bit khác thành một luồng thứ hai, dẫn đến luồng "chính" bị khóa ở mức 100% và luồng "nền" lơ lửng khoảng 20-60%. Trên lõi tứ, đó là ... 30-40%.
Vịt Mooing

3
Đừng quên chế độ Turbo trên CPU. TASkmanager không tính đến điều đó khi tính toán tỷ lệ phần trăm tải. Trên i5-4570S của tôi, tôi thấy tải thường khoảng 30%. Đó là một lõi (25%) với tốc độ 2,9 GHz thông thường được tăng lên 3,4 GHz. 25 * 3,4 / 2,9 là gần 30%. Với mức chênh lệch cao hơn giữa tần số bình thường và Turbo, chúng ta có thể tăng cao hơn.
Sunzi

7
@AytAyt - Tôi sẽ tiến thêm một bước và nói rằng điều đó không thể xảy ra, nó gần như chắc chắn . Trừ khi ứng dụng của OP đang thực hiện việc bẻ khóa số thuần túy (hoặc sử dụng khóa xoay ở mọi nơi), thực sự rất khó để tải đầy đủ CPU, ngay cả với chương trình đa luồng. Bất kỳ I / O đĩa hoặc mạng nào cũng sẽ để lại các chu kỳ nhàn rỗi và được OP đề cập đến một ứng dụng "tụt hậu", có vẻ như có thể có một số giao tiếp mạng đang hoạt động.
aroth

50

Bạn chưa chỉ định HĐH của mình. Vì vậy, câu trả lời sẽ được phổ biến như thế nào.

Các ứng dụng có thể bị giới hạn bởi nhiều lý do. Nút thắt có thể nằm trong:

  • CPU
    • tốc độ thấp
    • các ứng dụng đơn / thấp (không có khả năng sử dụng tất cả các lõi / luồng)
  • Tôi / O
    • thông lượng đĩa
    • độ trễ đĩa
    • thông lượng mạng
    • độ trễ mạng
  • ký ức
    • sức chứa
    • thông lượng
    • độ trễ
    • không đủ bộ nhớ cache
    • địa phương (NUMA)
    • hoán đổi

Và có nhiều lý do, mà không quá phổ biến.

Vì vậy, hãy xem tài nguyên hệ thống của bạn và cố gắng phân tích hệ thống của bạn cho các nút thắt khác, thay vì chỉ tải tổng CPU.


9
Ngoài ra: Thẻ video có GPU, I / O và bộ nhớ riêng biệt, bất kỳ thứ nào trong số đó cũng có thể là vấn đề.
Vịt Mooing

2
@MooingDuck Đúng, nhưng đó thường chỉ là vấn đề nếu ứng dụng đang được đề cập thực sự sử dụng GPU (tức là trò chơi 3D hoặc ứng dụng CUDA / OpenCL hoặc một số thứ tương tự.)
thiệu lại vào

12

Nói chung, khi mọi người nói về máy tính của họ bị chậm, tôi nhắc đến bụi. Là một cựu công nghệ máy tính với 15 năm kinh nghiệm chuyên môn, tôi thấy rằng chỉ cần thổi bụi có thể cải thiện đáng kể hiệu suất.

Tôi không nói về một lượng bụi mỏng, gần như không thể nhận ra, mà là những đám lớn hoặc thậm chí là những tấm thảm ngăn luồng khí bình thường. Tôi đã thấy các bộ tản nhiệt về cơ bản có bộ lọc trên chúng là bụi, chứ không phải là bộ lọc thực tế. Điều này ngăn chặn một lượng không khí rất đáng kể từ khi làm mát CPU. Loại bỏ bụi như thế này sẽ có xu hướng làm yên quạt ngay lập tức và cho phép các thành phần của bạn tồn tại lâu hơn. Nhiệt đã giết chết nhiều máy tính tôi được yêu cầu sửa chữa.

Đi cùng với ý tưởng vấn đề nhiệt, bạn cũng có thể thử dán nhiệt tốt hơn. Hầu hết các bộ xử lý cr @ p màu trắng đi kèm giống như Yugo của dán nhiệt. Tôi sử dụng Bạc Bắc Cực, nhưng thậm chí còn có thứ tốt hơn thế. Bạc Bắc Cực nói về một chiếc porche (sử dụng thang đánh giá xe hơi), nhưng có những loại siêu xe và siêu xe của Ferrari ngoài kia.

Bộ xử lý có xu hướng chậm lại khi chúng quá nóng. Đây là một thứ vật lý cũng như "tự bảo quản" được lập trình thành nhiều CPU. Tôi không biết liệu nó vẫn hiển thị 100% trên Trình quản lý tác vụ hay nếu nó sẽ hiển thị 40% (như bạn thấy), nhưng nó có thể bị chậm đáng kể trong khi CPU cố gắng để tản nhiệt và quạt " bắt kịp."

Một thứ khác có thể làm chậm CPU của bạn là GPU. Nếu bạn đang chạy các trò chơi hoặc tiện ích chuyên sâu về đồ họa (như CAD), GPU của bạn có thể đang giữ CPU của bạn. Có được một thẻ video tốt hơn có thể là một cái gì đó để xem xét. Ngoài ra, sử dụng sai thẻ đúng có thể đang giữ bạn lại. Thẻ chơi game không (thường) được thiết kế để hoạt động với CAD cũng như thẻ máy trạm và thẻ máy trạm (thường) sẽ không chơi game tốt cả. Một số làm, nhưng hầu hết không.

Như @Jaroslav Kucera đã đề cập, nó có thể liên quan đến đĩa. Đánh HD (s) rất nhiều có thể làm bạn chậm lại. Tôi thường chạy nhiều ổ đĩa. Một dành riêng cho HĐH và (các) phần mềm khác, tệp trang Windows, tệp cá nhân, v.v. Bên cạnh đó, không phải lo lắng quá nhiều về việc sao lưu dữ liệu cá nhân trong trường hợp hệ điều hành bị lỗi, có nhiều HD làm tăng đáng kể khối lượng công việc. Đọc và ghi vào cùng một đĩa cùng một lúc có thể làm chậm nghiêm trọng HD. Sử dụng SHD có thể giảm thiểu điều này, nhưng không hoàn toàn. Photoshop và phần mềm chỉnh sửa video được biết là đánh mạnh vào HD. Đọc từ một HD sau đó xuất ra HD thứ 2 là cách tốt nhất. Điều này cũng giúp cuộc sống của HD của bạn. Tôi cũng đi với làm mát tích cực trên HD của tôi. Tôi đã không giết một ổ cứng kể từ khi tôi đặt một cái quạt và tản nhiệt cho chúng cách đây 15 năm. Google họ, họ là bảo hiểm giá rẻ.

Dù bạn có tin hay không, PSU của bạn cũng có thể làm bạn chậm lại. Nếu bạn không có đủ năng lượng (hoặc PSU của bạn đã cũ hoặc giá rẻ, POS được đánh giá quá cao), bạn có thể gặp vấn đề về hiệu suất. Tôi đã tận mắt nhìn thấy những vấn đề kỳ quặc mà hệ điều hành PSU có thể làm. Bạn đang tìm kiếm điện áp cũng như ampe kế, vì vậy hãy đảm bảo rằng tất cả chúng đều khớp với thông số kỹ thuật trên PSU, nếu bạn đi theo tuyến đường này và cũng đảm bảo rằng chúng đáp ứng hoặc vượt quá nhu cầu năng lượng của bạn. Nếu các thành phần của bạn tổng cộng 500 watt và bạn đang cung cấp cho chúng thậm chí là 475, điều đó thật tệ. Tôi khuyên bạn nên vượt quá yêu cầu của mình khoảng 20%, để PSU của bạn già đi (và giảm sức mạnh) và các thành phần khác của bạn già đi (và yêu cầu năng lượng vi trần), bạn không bị mắc kẹt khi mua PSU mới quá nhanh.

Bao gồm các câu trả lời khác ở đây, vẫn còn nhiều lý do để máy tính của bạn chạy chậm. Ngoại trừ tùy chọn PSU, những gì tôi nói về rất thường thấy khi tôi là một công nghệ máy tính. Làm một điểm chuẩn và các bài kiểm tra khác là cách duy nhất bạn có thể tìm ra. Hoán đổi các bộ phận thậm chí có thể không giải quyết được vấn đề nếu đó là sự kết hợp của nhiều bộ phận gây ra sự chậm lại.

Và, AFAIK, không có cách nào để buộc máy tính của bạn sử dụng 100% bộ xử lý. CPU và hệ điều hành biết những gì họ cần làm và thường thực sự giỏi trong công việc của họ. :-) Tôi không nghĩ có ai đã tìm ra cách buộc nguồn cấp dữ liệu CPU để làm cho nó chạy 100% khi bạn nghĩ nó nên. Ít nhất không phải không cho nó ăn thêm rác để làm cho tỷ lệ phần trăm "trông tốt".

Với việc bạn nhìn thấy 40% và không và phân chia số nguyên 100% (như 25%, 33% hoặc 50%), tôi có cảm giác đó không phải là vấn đề phân luồng đơn lẻ. Nó có thể, nhưng đó không phải là nơi tâm trí của tôi đi. Tuy nhiên, +1 cho @Twisty Impersonator để đưa nó lên ngay lập tức.

Chúc may mắn cố gắng để tìm ra điều này! Tôi đã dành nhiều ngày cố gắng để tìm ra loại điều này, chỉ để kết thúc việc thay thế hầu hết các can đảm là "phương sách cuối cùng".


1
+1 để chỉ ra khả năng ứng dụng có thể bị treo trên GPU tối đa.
Kẻ giả mạo Twisty

6
Tôi quên đề cập, hút thuốc gần máy tính của bạn là một trong những điều tồi tệ nhất bạn có thể làm. Nó để lại một mớ hỗn độn khó chịu, thô thiển và kinh tởm (không thể nhấn mạnh là đủ) màu cam-ish không thể được làm sạch. Bụi trở nên bẩn và không thể làm sạch. Bạn có thể có được nó với một bồn tắm dầu phụ tùng hoặc tắm nước âm, nhưng tôi không bao giờ trải qua rắc rối đó. Ngay cả việc làm sạch trường hợp là một nỗ lực vô ích.
máy tính

2
Chỉ từ quan điểm của một nhà phát triển, CPU sẽ làm bất cứ điều gì bạn nói với nó. Nếu nó không đạt tối đa 100%, thì đó là vì chương trình của bạn đang chờ đợi những thứ khác xảy ra (đĩa IO, mạng, đầu vào của người dùng, tin nhắn hệ thống, v.v.). Nếu bạn có việc gì đó để CPU thực hiện, nó sẽ tự động sử dụng 100% (giả sử ứng dụng đa luồng) để làm những gì chương trình của bạn cần - bạn không phải "làm cho nó" sử dụng 100% hoặc mở khóa hoặc một cái gì đó.
JPhi1618

2
@ JPhi1618: Bạn đang quên nhiệt. Bất kể bạn bảo nó làm gì, nếu CPU quá nóng, nó sẽ tự điều tiết để chạy ở mức thấp hơn 100%.
Vịt Mooing

9
Các CPU @ JPhi1618 thường được điều chỉnh bằng cách tăng tần số (ép xung), vì vậy thay vì chạy tại, giả sử thay vì 3.0GHz, chúng chạy ở tốc độ 2.0 GHz. Vì vậy, CPU điều chỉnh nhiệt vẫn có thể báo cáo tải 100%, vì mọi "khe công việc" đều bị chiếm dụng, chỉ cần có ít "khe công việc" hơn trong đơn vị thời gian có sẵn.
el.pescado

2

Nó có thể là cài đặt tiết kiệm năng lượng trong bios hoặc hệ điều hành. Nhiều CPU và bo mạch chủ hiện đại có các cài đặt để cho phép CPU tiết kiệm hơn với việc sử dụng điện, (đặc biệt đúng đối với máy tính xách tay muốn pin kéo dài). Bạn có thể có thể tắt cài đặt như vậy, nhưng hãy chắc chắn rằng bạn biết những gì bạn đang làm như bên cạnh cài đặt, thường có những thứ khác có thể ảnh hưởng đến chức năng của máy tính theo những cách quan trọng khác.


1

Không biết chi tiết cụ thể về chương trình của bạn, thật khó để nói, nhưng vì một câu trả lời khác xem xét khả năng ứng dụng chỉ có một luồng, tôi sẽ xem xét ứng dụng như thể nó đang sử dụng đa luồng thích hợp.

Một điều phổ biến bị bỏ qua là lõi vật lý so với "lõi siêu phân luồng". Siêu phân luồng vượt trội ở nhiều tác vụ ngắn với các nút cổ chai khác với CPU. Đối với các tác vụ bị nghẽn cổ chai CPU, bạn vẫn bị giới hạn bởi số lượng lõi vật lý, thường là một nửa số lượng lõi siêu phân luồng của bạn. Trong trường hợp hoàn toàn xấu nhất, trình quản lý tác vụ của bạn chỉ có thể hiển thị mức sử dụng 50% vì nó tính các lõi siêu phân luồng trong biểu đồ của nó, khi trong thực tế, các lõi vật lý của bạn có thể được sử dụng 100%. Tuy nhiên, nói chung, bạn sẽ thể hiện nhiều hơn thế, vì hệ điều hành của bạn sẽ có thể sử dụng siêu phân luồng cho các tác vụ không liên quan khác.


Sẽ không "đa luồng thích hợp" có nghĩa là có một luồng với công việc phải làm cho mọi lõi logic hơn là mọi lõi vật lý ? Nếu bạn đang chạy một vòng lặp chặt chẽ trên mọi lõi logic, Trình quản lý tác vụ sẽ báo cáo 100% với siêu phân luồng. AFAIK, "mức sử dụng phần trăm" trong Trình quản lý tác vụ dựa trên lượng thời gian mà chuỗi được đề cập ở trạng thái có thể chạy được và được lên lịch trên lõi logic, không nhất thiết là thời gian thực sự, nói, làm gì đó trên ALU . Hệ điều hành có thể thậm chí sẽ không biết rằng (chỉ có vi mã CPU mới có.)
thiệu lại vào

1
Mã máy "thông thường" chỉ sử dụng 2 đến 3 trong số 6 cổng lệnh trở lên trên các CPU hiện đại. Chưa kể tất cả các quầy hàng đường ống gây ra bởi các nhánh và bộ nhớ cache bị mất. Siêu phân luồng giúp lấp đầy những khoảng trống đó. Nó hầu như luôn luôn là một chiến thắng để sử dụng nó. Một số loại mã không làm tốt với nó, như mã hóa / giải mã video hoặc toán ma trận được tối ưu hóa mạnh. Nhưng đó là những bất thường.
Zan Lynx

1

Tôi thường xuyên đạt mức sử dụng 100% khi thực hiện các nhiệm vụ kết xuất và toán học. Tôi sẽ xác minh rằng siêu phân luồng sẽ đạt mức cao 100% và đặt hàng hướng dẫn là một vấn đề lớn. Cả Intel và AMD đều có số lượng lớn phần cứng dành riêng cho hướng dẫn sắp xếp lại để lấp đầy càng nhiều lõi thực thi càng tốt. Nếu bạn nhận được 30% cho một máy hiện đại, bạn có thể

  • Kiểm tra Temps - Intel và AMD đều giảm tốc độ khi chúng bị nóng và nó hiển thị dưới dạng stutter và gai.
  • Không được làm nhiều với nó .... ví dụ là:
    1. Duyệt web
    2. E-mail
    3. Trò chơi đơn giản nhất
    4. Tôi gần như đảm bảo vấn đề của bạn là một hoặc tất cả những điều sau đây, bắt đầu từ đầu:
  • Nhận một ổ SSD
  • Nhận một ổ SSD
  • Nhận hệ điều hành của bạn trên SSD và di chuyển dữ liệu bình thường sang ổ đĩa đa TB truyền thống. Windows cần nhiều hơn các tệp cục bộ của nó hơn bất cứ thứ gì.
  • Bonazai Buddy?
  • Giữ tất cả các ổ đĩa ở mức tối thiểu 10% công suất. NTFS là một hệ thống tệp nhật ký và hiệu suất đi xuống đầy đủ hơn ổ đĩa.
  • Bạn cần một ổ NVMe / SSD cho ổ đĩa hệ điều hành của bạn càng sớm càng tốt (vâng tôi đã nói lại rồi). Hiệu suất thật đáng kinh ngạc, và nó mang đến phần hai của điều này ... Một nhà bán lẻ lớn đã bán ổ đĩa 512GB Samsung 961 NMVe với giá 300 đô la ngày nay, rất nhiều cho sử dụng bình thường.
  • Windows 10 là GPU nặng. Một card màn hình chuyên dụng giá rẻ có thể giảm tải cả bộ nhớ và CPU. Bạn vẫn có thể sử dụng APU kết hợp với thẻ video nhưng bạn sẽ tiết kiệm được một số RAM và VRAM thường nhanh hơn nhiều.
  • CPU có số lượng lõi thấp hơn cũng bị giới hạn bộ nhớ. Nếu bạn nhìn vào i7, tất cả chúng đều chạy DDR bốn kênh ở 4 ngân hàng. Chip Epyc của AMD sẽ là DDR5 8 kênh với 64 lõi. Không giúp được gì. Cuối cùng, và tôi không thể nhấn mạnh điều này đủ, hãy đổ tiền vào RAM nhiều như máy của bạn sẽ mất. Tôi đã có 32GB và sẽ mua thêm 32 vào cuối năm nay. Windows thực hiện một cái gì đó tương tự như siêu tải mới hơn một chút để nén bộ nhớ trong RAM không được sử dụng để các chương trình và dữ liệu có thể được giải nén khi cần. Một ví dụ khác, tôi chạy Linux VM để phát triển, đã phân bổ 6/12 lõi và ram 16 GB và sau lần tải đầu tiên ra khỏi SSD, nó sẽ khởi động sau ~ 3 giây. CPU được coi là rất rẻ những ngày này bởi tối ưu hóa như thế ...

Tất cả những thứ này có vẻ như quá mức cho đến khi tôi bị kẹt khi biên dịch một dự án tệp 70k hoặc nâng cấp các tệp thô của máy ảnh khổng lồ lên 17 "x26" x600 dpi ở màu 16 bit. Ngay cả khi sử dụng 100%, các tài nguyên là quá mức cần thiết mà bạn không bị chậm lại. Đêm nọ, tôi nhận ra rằng tôi có hai máy ảo và một con Sói 2 được tải cùng với 2 IDE (tôi bị phân tâm, kiện tôi) và không nhận thấy sự chậm lại. Đây là một máy BTW ~ $ 1500, không có gì đặc biệt và được mua chậm nhất trong những năm qua. Một nửa số đó là một trong những chiếc Radeon RX64 vì card màn hình của tôi đã 6 tuổi. Sự khác biệt lớn trong kết xuất và như vậy. Nâng cấp có thể sẽ giúp bạn sử dụng phần cứng nhiều hơn so với giả định rằng 30% sử dụng của bạn là tất cả những gì bạn sẽ nhận được.

Nếu tôi ném một ổ cứng 5400RPM trong máy này cho HĐH thì nó sẽ chạy như toàn bộ.

TL; DR có vẻ như CPU ​​của bạn bị ràng buộc ngay bây giờ. Chi vài trăm cho ít nhất một ổ SSD 256 GB cho HĐH, ram 8GB và thẻ game thủ cấp thấp hơn và máy tính sẽ tồn tại trong nhiều năm. Cái này tồn tại được 6 năm trước khi cuối cùng tôi thực hiện bộ xử lý và làm mới Mobo và tôi đang biên dịch toàn bộ bộ biên dịch chéo khoảng 25 lần một ngày với thiết bị cũ.

Gọi cho tôi quá mức nhưng tôi không đề xuất 8 thẻ Tesla hoặc bất cứ điều gì. :-) Hãy nâng cấp nhỏ khi bạn có thể và tôi nghĩ bạn sẽ giải quyết được rất nhiều vấn đề này. Tôi đã làm nhiều năm trước bằng cách thêm một ổ SSD vào hệ thống Q6600 và xem hiệu suất gấp ba.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.