Perbedaan kinerja antara distribusi / paket linux yang dikompilasi dan biner

13

Saya mencari banyak di internet dan tidak dapat menemukan jawaban yang tepat.

Ada distro seperti Gentoo (atau FreeBSD) yang tidak datang dengan binari tetapi hanya dengan kode sumber untuk paket (port).

Mayoritas distro menggunakan backage biner (debian, dll.).

Pertanyaan pertama: Berapa banyak peningkatan kecepatan yang dapat saya harapkan dari paket yang dikompilasi? Berapa banyak peningkatan kecepatan yang bisa saya dapatkan dari paket dunia nyata seperti apache atau mysql? yaitu pertanyaan per detik?

Pertanyaan kedua: Apakah paket biner berarti tidak menggunakan instruksi CPU yang diperkenalkan setelah CPU AMD 64bit pertama? Dengan paket 32bit apakah itu berarti bahwa paket tersebut akan berjalan pada 386 dan pada dasarnya tidak menggunakan sebagian besar instruksi CPU modern?

Informasi tambahan:

  • Saya tidak berbicara tentang desktop, tetapi lingkungan server.
  • Saya tidak peduli tentang waktu kompilasi
  • Saya memiliki lebih banyak server, jadi peningkatan kecepatan lebih dari 15% layak untuk menggunakan paket kode sumber
  • Tolong jangan ada flamewars.
jozko
sumber
1
Hanya untuk memperbaiki asumsi yang salah: FreeBSD memang datang dengan pohon port (sumber) dan dengan paket biner. Lihat man (1) pkg_adddan ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/.
Hennes

Jawaban:

7

Perbedaan kinerja dalam hampir semua kasus minimal dan tidak berharga. Alasan bagus untuk menggunakan distribusi sumber (sambil menggulirkan paket biner Anda sendiri, seperti yang dimungkinkan oleh sistem bindist gentoo) meliputi:

  • Menyebarkan tambalan khusus Anda sendiri
  • Kustomisasi kernel Anda dengan mudah
  • Kemas pembaruan Anda sendiri

Jika Anda tidak melakukan hal-hal ini, Anda tidak perlu distribusi sumber. Untuk penggunaan pribadi, mereka sangat nyaman karena memungkinkan Anda untuk meningkatkan hal-hal secara bertahap sesuka hati tanpa terlalu mengkhawatirkan kompatibilitas biner, yang bukan masalah yang sering saya lihat dalam pengaturan perusahaan.

Perlu dicatat bahwa Anda dapat melakukan hal-hal ini dengan distribusi biner juga, dengan membuat paket RPM Anda sendiri atau apa pun. Overhead manajemen serupa.

Anda pada dasarnya tidak akan melihat peningkatan kecepatan 15% dengan mengkompilasi dari sumber. Saya akan enggan untuk memperkirakannya bahkan setinggi 5% dalam setiap kasus yang masuk akal. Kompilasi dari sumber memberi Anda beberapa hal:

  • Anda bisa menggunakan versi kompiler pilihan Anda
  • Anda dapat mengarahkan kompiler untuk menghasilkan instruksi dari ekstensi ISA yang tidak digunakan dalam paket distribusi biner, seperti AESNI dan AVX

Namun, kompiler sangat jarang benar-benar menghasilkan ini, dan penghematan keseluruhan dari menggunakannya umumnya sangat kecil ketika kinerja aplikasi diambil secara keseluruhan. Hal-hal seperti akses RAM (dan latensi) dan latensi disk dan perangkat adalah faktor yang jauh lebih besar, dan Anda harus benar-benar mulai dari sana.

Aplikasi yang mungkin mendapat manfaat dari kompilasi khusus yang hanya akan berjalan pada Intel core i7 atau i5 yang relatif baru termasuk yang melakukan banyak vektor matematika dan yang melakukan banyak enkripsi dan dekripsi AES, atau memerlukan banyak angka acak. Jika Anda ingin menggunakan DRBG Intel, Anda harus melakukannya juga saat ini.

Jika tidak ada yang berlaku untuk Anda, Anda akan cukup senang dengan distribusi berbasis debian atau red hat di luar sana, dan akan memiliki overhead pemeliharaan yang jauh lebih sedikit.

Falcon Momot
sumber
9

Jawaban singkat ... Banyak aplikasi berskala besar dan sensitif terhadap kecepatan / latensi berjalan pada distribusi Linux standar. Red Hat, CentOS, Debian, Ubuntu ... Mereka semua bekerja dengan baik di sebagian besar kasus. Sebagian besar keuntungan datang dari penyetelan aplikasi, optimalisasi dan infrastruktur kernel dan OS standar.

Gentoo mungkin menawarkan beberapa optimasi, tetapi buka pintu untuk lebih banyak kesengsaraan manajemen, berkurangnya mindshare, berkurangnya dukungan vendor dan driver, masalah stabilitas, ejekan dan kemungkinan masalah keamanan.

Saya telah mengelola server berbasis Gentoo di lingkungan perdagangan keuangan frekuensi tinggi. Walaupun ada sedikit manfaat kinerja di bawah Gentoo, saya masih pindah ke Red Hat dan CentOS. Keuntungan Gentoo di atas kertas dengan mudah diatasi dengan pemilihan perangkat keras yang lebih cerdas, dukungan server / integrasi perangkat keras yang lebih baik, penambalan yang lebih cerdas oleh para insinyur Red Hat dan teknologi yang lebih esoteris seperti kernel ...

Jika Anda berada pada titik di mana efisiensi tumpukan aplikasi populer (LAMP) menjadi masalah, pastikan untuk mengoptimalkan perangkat keras server Anda (tipe CPU, tata letak RAM), infrastruktur jaringan, sistem pemantauan dan dapat mengidentifikasi kemacetan sistem sebelum turun jalan ini.

Apakah Anda mencapai batasan kinerja sekarang ?

putih
sumber
5

Semua poin yang dibuat tentu saja benar. Saya hanya ingin mengambil beberapa masalah dengan gagasan bahwa peningkatan kinerja 5% -15% tidak dapat diraih, terutama dengan GCC versi modern, itu benar-benar tergantung pada arsitektur CPU dan seberapa dekat dengan garis-dasar yang digunakan sebagai target. untuk distribusi biner. GCCs -march = asli akan, selain menggunakan ekstensi ISA juga mengoptimalkan untuk ukuran cache / baris L1 dan L2. Kode yang disejajarkan dengan benar (untuk CPU Anda) dapat menjadi jauh lebih cepat terutama ketika -flto juga digunakan sehingga kompiler dapat mengetahui semua yang perlu diperhitungkan. [beberapa paket saat ini rusak dengan KPP, sayangnya]

Selain itu, kompilasi paket terpilih dengan -Ofast, selain maret = asli dan KPP dapat membuat perbedaan yang signifikan.

Di masa depan, jika infrastruktur Graphite GCCs pernah stabil yang akan memiliki potensi untuk keuntungan yang lebih besar.

Steven Newbury
sumber
Anekdot yang mendukung jawaban ini: beberapa tolok ukur yang saya jalankan dengan Kairo dan Pixman yang dikompilasi -march=nativepada CPU Skylake (klien) lebih cepat 5 hingga 20% daripada distribusi biner. (Paket-paket itu mungkin relatif mudah bagi kompiler untuk melakukan auto-vektorisasi.) -fno-semantic-interpositionAdalah flag lain yang baik untuk dicoba, sebagaimana adanya -falign-functions.
ZachB
4

Tergantung pada apa yang Anda inginkan dalam sistem Anda, dan benar-benar ada tiga aliran pemikiran di sini (dan ini berlaku untuk perangkat keras dan perangkat lunak)

Pertama, arus utama sejauh kebanyakan orang di SF pergi - Anda ingin sesuatu yang Anda tahu akan bekerja, Anda ingin dukungan dan Anda menginginkannya sekarang . Dalam hal ini, menggunakan sistem berbasis redhat (RHEL memberi Anda dukungan luar biasa, dan centos adalah komunitas yang dibangun kembali dari distribusi RHEL yang teruji dengan baik). Namun Anda tidak akan mendapatkan yang terbaru dan terhebat. Dalam banyak kasus ini juga berlaku untuk perangkat keras.

Yang kedua adalah sudut pandang 'tengah jalan', yang merupakan jalan tengah - terjadi dengan sesuatu seperti ubuntu. Anda menginginkan paket-paket baru (dengan mengorbankan sedikit stabilitas yang sempurna), Anda menginginkan sebuah pemasang, dan hal-hal baik .

Dalam beberapa kasus orang memang mengalami masalah, tetapi Anda memiliki paket yang lebih baru dan hal-hal yang diuji cukup . Meskipun ada banyak kebencian untuk Ubuntu di sini, ini adalah kompromi yang baik antara kemudahan pengaturan dan paket yang cukup baru. Debian mungkin adalah pilihan yang sedikit lebih konservatif. Saat ini, Anda bahkan dapat mengatur Ubuntu dengan kernel latensi rendah di luar kotak. Saya cenderung merasa ubuntu dan debian berfungsi untuk saya, tetapi ymmv. Banyak tempat yang menggunakan banyak server seperti facebook dan google go untuk opsi ini.

Akhirnya ada distribusi berbasis sumber. Pengaturan awal dalam kebanyakan kasus adalah rasa sakit yang luar biasa di bagian belakang. Anda membuat kesalahan dengan mengatur kernel Anda? Ups, habiskan beberapa jam untuk menyusun ulang. Anda juga tidak mendapatkan penginstal - itu untuk n00bs. Anda sering mendapatkan aplikasi tepi berdarah, dan opsi untuk mengkompilasi mereka saat Anda membutuhkannya (yang termasuk dapat memilih optimasi untuk kecepatan atau penggunaan memori misalnya), dan rilis bergulir. Jika Anda memiliki kebutuhan esoteris yang sangat spesifik, gentoo hebat. Jika Anda perlu meluncurkan beberapa lusin sistem dan ingin mengotomatiskannya ... semoga berhasil. Distribusi berbasis sumber tidak berskala juga. Anda mendapatkan banyak fleksibilitas, * beberapa ** kecepatan ekstra, tetapi tidak dapat dipertahankan pada tingkat yang sama dengan IMO distribusi berbasis paket. Kamu tidakkemungkinan akan mendapatkan kecepatan ekstra 15%, dan Anda mungkin akan berakhir dengan membuang waktu mencoba menyetel flag kompilasi untuk perangkat keras Anda, dan jika Anda mengacaukan sesuatu, menghabiskan waktu untuk mencari tahu apa yang sebenarnya gagal.

masukkan deskripsi gambar di sini

BSD adalah keluarga OS yang terpisah . Beberapa orang bersumpah oleh mereka (setidaknya satu comms room reguler adalah pengguna freebsd), dan BSD yang berbeda memiliki fokus yang berbeda - misalnya openbsd adalah terobsesi dengan keamanan, dan freebsd adalah yang 'mainstream'. Mereka mungkin tidak, dalam beberapa kasus memiliki jenis dukungan perangkat keras yang sama dengan linux, tetapi itu tergantung pada beberapa faktor.

Journeyman Geek
sumber