Hiệu suất khác nhau giữa các bản phân phối / gói linux được biên dịch và nhị phân


13

Tôi đã tìm kiếm rất nhiều trên internet và không thể tìm thấy câu trả lời chính xác.

Có các distro như Gentoo (hoặc FreeBSD) không đi kèm với nhị phân mà chỉ có mã nguồn cho các gói (cổng).

Phần lớn các distro sử dụng sao lưu nhị phân (debian, v.v.).

Câu hỏi đầu tiên: Tôi có thể tăng bao nhiêu tốc độ từ gói biên dịch? Tôi có thể tăng bao nhiêu tốc độ từ các gói trong thế giới thực như apache hoặc mysql? tức là truy vấn mỗi giây?

Câu hỏi thứ hai: Liệu gói nhị phân có nghĩa là nó không sử dụng bất kỳ hướng dẫn CPU nào được giới thiệu sau CPU AMD 64 bit đầu tiên? Với các gói 32 bit, điều đó có nghĩa là gói đó sẽ chạy trên 386 và về cơ bản không sử dụng hầu hết các hướng dẫn CPU hiện đại?

Thông tin bổ sung:

  • Tôi không nói về máy tính để bàn, nhưng môi trường máy chủ.
  • Tôi không quan tâm đến thời gian biên dịch
  • Tôi có nhiều máy chủ hơn, vì vậy tốc độ tăng hơn 15% là đáng để sử dụng các gói mã nguồn
  • Xin vui lòng không có flamewars.

1
Chỉ cần sửa một giả định sai: FreeBSD không đi kèm với cả cây cổng (nguồn) và với các gói nhị phân. Xem man (1) pkg_addftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/.
Hennes

Câu trả lời:


6

Sự khác biệt hiệu suất sẽ trong hầu hết các trường hợp tối thiểu và không đáng giá. Những lý do chính đáng để sử dụng phân phối nguồn (trong khi cuộn các gói nhị phân của riêng bạn, vì hệ thống liên kết của gentoo cho phép) bao gồm:

  • Triển khai các bản vá tùy chỉnh của riêng bạn
  • Dễ dàng tùy chỉnh kernel của bạn
  • Đóng gói cập nhật của riêng bạn

Nếu bạn không làm bất cứ điều gì trong số này, bạn không cần phân phối nguồn. Đối với sử dụng cá nhân, chúng rất tiện lợi vì chúng cho phép bạn nâng cấp mọi thứ theo ý muốn mà không phải lo lắng quá nhiều về khả năng tương thích nhị phân, đây không phải là vấn đề tôi thường thấy trong cài đặt doanh nghiệp.

Điều đáng chú ý là bạn cũng có thể thực hiện những điều này với phân phối nhị phân, bằng cách tạo các gói RPM của riêng bạn hoặc bất cứ điều gì. Chi phí quản lý tương tự.

Về cơ bản, bạn sẽ không thấy tốc độ tăng 15% bằng cách biên dịch từ nguồn. Tôi không muốn ước tính nó thậm chí cao tới 5% trong mọi trường hợp hợp lý. Tổng hợp từ nguồn giúp bạn có một vài điều:

  • Bạn có thể sử dụng phiên bản trình biên dịch ưa thích của bạn
  • Bạn có thể chỉ đạo trình biên dịch tạo các hướng dẫn từ các phần mở rộng của ISA không được sử dụng trong các gói phân phối nhị phân, như AESNI và AVX

Tuy nhiên, trình biên dịch rất hiếm khi thực sự tạo ra những thứ này và tiết kiệm tổng thể từ việc sử dụng chúng thường rất nhỏ khi hiệu năng của ứng dụng được lấy toàn bộ. Những thứ như truy cập RAM (và độ trễ) và độ trễ của đĩa và thiết bị là những yếu tố lớn hơn nhiều, và bạn nên thực sự bắt đầu từ đó.

Các ứng dụng có thể được hưởng lợi từ quá trình biên dịch tùy chỉnh sẽ chỉ chạy trên Intel core i7 hoặc i5 tương đối gần đây bao gồm các ứng dụng thực hiện nhiều phép toán vectơ và các ứng dụng mã hóa và giải mã AES hoặc yêu cầu nhiều số ngẫu nhiên. Nếu bạn muốn sử dụng Intel DRBG, hiện tại bạn cũng cần phải làm điều này.

Nếu không có điều nào trong số này áp dụng cho bạn, bạn sẽ khá hài lòng với bất kỳ bản phân phối dựa trên debian hoặc mũ đỏ nào ngoài đó, và sẽ có ít chi phí bảo trì hơn.


9

Câu trả lời ngắn ... Nhiều ứng dụng nhạy cảm quy mô lớn và tốc độ / độ trễ chạy trên các bản phân phối Linux tiêu chuẩn. Red Hat, CentOS, Debian, Ubuntu ... Tất cả đều hoạt động tốt trong phần lớn các trường hợp. Hầu hết lợi ích đến từ điều chỉnh ứng dụng, tối ưu hóa hệ điều hành và nhân chuẩn và hệ điều hành.

Gentoo có thể cung cấp một số tối ưu hóa, nhưng mở ra cánh cửa cho nhiều tai ương quản lý hơn, giảm bớt suy nghĩ, giảm bớt sự hỗ trợ của nhà cung cấp và tài xế, vấn đề ổn định, chế giễu và các mối lo ngại về bảo mật.

Tôi đã quản lý các máy chủ dựa trên Gentoo trong môi trường giao dịch tài chính tần suất cao. Mặc dù có một số lợi ích hiệu suất nhỏ dưới Gentoo, tôi vẫn chuyển sang Red Hat và CentOS. Những lợi thế của Gentoo trên giấy dễ dàng được khắc phục bằng cách lựa chọn phần cứng thông minh hơn, hỗ trợ tích hợp phần cứng / nhà sản xuất máy chủ tốt hơn, vá thông minh hơn bởi các kỹ sư Red Hat và các công nghệ bí truyền hơn như bỏ qua nhân ...

Nếu bạn đang gặp vấn đề về hiệu quả của các ngăn xếp ứng dụng phổ biến (LAMP), hãy đảm bảo đã tối ưu hóa phần cứng máy chủ của bạn (loại CPU, bố trí RAM), cơ sở hạ tầng mạng, hệ thống giám sát và có thể xác định các tắc nghẽn hệ thống trước đó đi xuống con đường này

Bạn đang đạt một giới hạn hiệu suất bây giờ ?


5

Tất cả các điểm được thực hiện là tất nhiên chính xác. Tôi chỉ muốn đưa ra một số vấn đề với ý tưởng rằng hiệu suất tăng 5% -15% là không thể thực hiện được, đặc biệt với các phiên bản hiện đại của GCC, nó thực sự phụ thuộc vào kiến ​​trúc CPU và mức độ gần với đường cơ sở được sử dụng làm mục tiêu cho các phân phối nhị phân. GCCs -march = bản địa, ngoài việc sử dụng các phần mở rộng của ISA còn tối ưu hóa cho các kích thước bộ đệm / bộ đệm L1 và L2. Mã được căn chỉnh chính xác (cho CPU của bạn) có thể nhanh hơn nhiều, đặc biệt là khi -flto cũng được sử dụng để trình biên dịch có thể biết mọi thứ cần thiết để tính đến. [một số gói hiện đang bị hỏng với LTO, thật không may]

Ngoài ra, biên dịch các gói chọn với -Ofast, ngoài march = bản địa và LTO có thể tạo ra sự khác biệt đáng kể.

Trong tương lai, nếu cơ sở hạ tầng Graphite của GCCs ổn định sẽ có tiềm năng thu được lợi nhuận cao hơn nữa.


Giai thoại hỗ trợ cho câu trả lời này: một số điểm chuẩn tôi đã chạy với Cairo và Pixman được biên dịch -march=nativetrên CPU Skylake (máy khách) nhanh hơn 5 đến 20% so với phân phối nhị phân. (Các gói đó có thể tương đối dễ dàng cho trình biên dịch tự động vector hóa.) -fno-semantic-interpositionLà một cờ tốt khác để thử, như vậy -falign-functions.
ZachB

4

Nó phụ thuộc vào những gì bạn muốn trong hệ thống của bạn và thực sự có ba trường phái suy nghĩ ở đây (và điều này đúng cho cả phần cứng và phần mềm)

Thứ nhất, dòng chính theo như hầu hết mọi người trên SF đi - bạn muốn một cái gì đó bạn biết sẽ hoạt động, bạn muốn hỗ trợ và bạn muốn nó ngay bây giờ . Trong trường hợp này, đi với các hệ thống dựa trên redhat (RHEL cung cấp cho bạn sự hỗ trợ tuyệt vời và centos là một bản dựng lại cộng đồng của bản phân phối RHEL được thử nghiệm tốt). Tuy nhiên, bạn sẽ không nhận được mới nhất và tốt nhất. Trong nhiều trường hợp điều này cũng đúng với phần cứng.

Thứ hai là quan điểm 'giữa đường', là khu vực giữa - đi với một cái gì đó giống như Ubuntu. Bạn muốn các gói mới (với chi phí nhỏ của sự ổn định vững chắc hoàn toàn), bạn muốn có một trình cài đặt và những thứ tốt đẹp .

Trong một số trường hợp, mọi người gặp rắc rối, nhưng bạn có các gói mới hơn và mọi thứ được kiểm tra hợp lý . Mặc dù có rất nhiều sự căm ghét đối với Ubuntu ở đây, nhưng đây là một sự thỏa hiệp tốt giữa việc dễ dàng thiết lập và các gói mới hợp lý. Debian có lẽ là một lựa chọn bảo thủ hơn một chút. Ngày nay, bạn thậm chí có thể thiết lập Ubuntu với một hạt nhân có độ trễ thấp. Tôi có xu hướng cảm thấy Ubuntu và debian làm việc cho tôi, nhưng ymmv. Rất nhiều nơi triển khai rất nhiều máy chủ như facebook và google cho tùy chọn này.

Cuối cùng có phân phối dựa trên nguồn. Thiết lập ban đầu trong hầu hết các trường hợp là một nỗi đau hoàn toàn ở phía sau. Bạn mắc lỗi với việc thiết lập kernel của bạn? Rất tiếc, dành một vài giờ biên dịch lại. Bạn cũng không nhận được trình cài đặt - đó là cho n00bs. Bạn thường nhận được các ứng dụng cạnh chảy máu và tùy chọn biên dịch chúng khi bạn cần chúng (bao gồm khả năng chọn tối ưu hóa tốc độ hoặc sử dụng bộ nhớ chẳng hạn) và bản phát hành cuộn. Nếu bạn có nhu cầu rất cụ thể, bí truyền, thì thật tuyệt vời. Nếu bạn cần tung ra vài chục hệ thống và muốn tự động hóa nó ... chúc may mắn. Phân phối dựa trên nguồn chỉ đơn giản là không quy mô là tốt. Bạn đang nhận được rất nhiều tính linh hoạt, * một số ** tốc độ bổ sung, nhưng không thể duy trì ở cùng mức với IMO phân phối dựa trên gói. Bạn khôngcó khả năng nhận thêm 15% tốc độ và có thể bạn sẽ lãng phí thời gian khi cố điều chỉnh cờ biên dịch cho phần cứng của mình và nếu bạn làm hỏng thứ gì đó, hãy dành thời gian để giải quyết chính xác những gì thất bại.

nhập mô tả hình ảnh ở đây

BSD là một họ hệ điều hành riêng biệt . Một số người chửi rủa họ (ít nhất một người thường xuyên sử dụng phòng thường xuyên) và các BSD khác nhau có trọng tâm khác nhau - ví dụ openbsd bị ám ảnh về bảo mật và freebsd là 'chính thống'. Họ có thể không, trong một số trường hợp có cùng loại hỗ trợ phần cứng linux, nhưng điều đó phụ thuộc vào khá nhiều yếu tố.

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.