Performa build khusus OS di Java

Kami sedang mengevaluasi konfigurasi pc pengembang generasi berikutnya di seluruh perusahaan dan melihat sesuatu yang sangat aneh.

Monolit kami yang agak besar memiliki - pada konfigurasi kami saat ini, waktu pembuatan kira-kira. 4,5 menit (tidak ada tes, cukup kompilasi).

Untuk konfigurasi generasi berikutnya, kami meningkatkan beberapa komponen. Peningkatan moderat pada frekuensi dan IPC dengan prosesor, penggandaan jumlah inti CPU, dan peralihan dari SSD SATA kecil ke SSD NVMe dengan rating >3GBps. Selain itu, konfigurasi generasi berikutnya beralih dari Windows 7 ke Windows 10.

Saat menjalankan pengujian pertama, kami melihat waktu build yang hampir sama (4,3 Menit), dan peningkatannya jauh lebih sedikit dari yang kami harapkan.

Selama percobaan kami, kami mencoba pada satu titik untuk menjalankan proses pembangunan dari dalam mesin Linux virtual yang berjalan pada host windows. Pada konfigurasi lama (Windows7) kami melihat penurunan waktu build dari 4,5 menjadi ~3,7 Menit, pada Host Windows 10, kami melihat penurunan dari 4,3 menjadi 2,3 menit. Kami telah mengesampingkan hal-hal seperti pemindaian virus.

Kami agak terkejut dengan hasil ini dan mencoba mencari penjelasan lain selain pernyataan yang hampir bersifat keagamaan dan menghina tentang sistem operasi yang berbeda.

Jadi pertanyaannya adalah: Kesalahan apa yang mungkin kita lakukan dalam mengkonfigurasi mesin Windows sehingga kecepatannya hampir setengah dari kecepatan Linux yang berjalan tervirtualisasi di host windows yang sama? Terutama karena semua kemajuan perangkat keras tampaknya termakan oleh peralihan dari Windows 7 ke 10.

Pertanyaan lainnya adalah: Bagaimana kita bisa menguasai proses javac menggunakan lebih banyak core, karena saat ini, dengan menggunakan Hotspot JDK 8 kita dapat melihat paling banyak dua core yang benar-benar digunakan oleh build. Saya telah membaca tentang sjavac tetapi sepertinya fitur eksperimental hanya tersedia untuk OpenJDK9 dan seterusnya, bukan?


person Jonathan    schedule 17.02.2018    source sumber


Jawaban (1)


Setelah hampir setahun bereksperimen kami sampai pada kesimpulan, bahwa memang NTFS-lah pelaku kejahatannya. Jika Anda memiliki partisi pengguna ntfs dengan host linux, Anda mendapatkan hasil yang agak mirip dibandingkan dengan pengaturan semua jendela.

Kami melakukan tolok ukur pembangunan gradle, pembangunan internal gerhana, memulai wildfly, dan menjalankan pengujian yang berpusat pada basis data pada beberapa perangkat. Semua tolok ukur kami secara konsisten menunjukkan peningkatan kecepatan setidaknya 100% saat beralih dari Windows ke Linux (terkadang, Windows membutuhkan waktu 3x lebih lama dibandingkan Linux dalam tolok ukur dunia nyata, beberapa tolok ukur buatan memiliki kecepatan 60!). Khususnya pada notebook, kami mengalami lebih sedikit noise, karena beban prosesor gabungan dari build lengkap jauh lebih sedikit dibandingkan dengan windows.

Kesimpulan kami adalah, beralih dari Windows ke Linux selama setahun terakhir.

Mengenai paralelisasi, kami menyadari, itu adalah suatu bentuk keterikatan kode. Menyelesaikan masalah ini membantu gradle dan javac untuk memparalelkan build (lihat juga gradle-composite-builds)

person Jonathan    schedule 13.02.2019