Bagaimana "angka latensi yang harus diketahui setiap programmer oleh Jeff Dean" akurat dalam konteks beragam implementasi perangkat keras?


11

Saya merujuk grafik nomor latensi ini , dikaitkan dengan Jeff Dean di Google.

Hal yang saya tidak mengerti adalah, apakah angka-angka ini tidak berbeda dari satu set perangkat keras ke yang berikutnya? Bagaimana ini bisa akurat untuk semua jenis RAM, CPU, motherboard, hard drive, dll?


Lihat people.eecs.berkeley.edu/~rcs/research/interactive_latency.html yang menunjukkan perbedaan angka menurut (perangkat keras yang representatif per) tahun.
ShreevatsaR

Jawaban:


14

Angka-angka ini (juga terdaftar di Program Teach yourself milik Norvig dalam 10 tahun ) merupakan perkiraan, hanya berguna sebagai (urutan) besarnya.

Sebenarnya, perangkat keras saat ini (setidaknya untuk desktop atau laptop) tidak banyak berbeda bahkan antara laptop € 300 murah dan workstation 10k € high-end. Kecepatan bervariasi dengan faktor sekitar 2 atau 4 paling banyak. Workstation semacam itu dapat memiliki disk yang lebih besar, lebih banyak core, cache, dan RAM. Namun, ini tidak memiliki banyak dampak pada kinerja single-threaded mentah.

Lihatlah beberapa angka di http://openbenchmarking.org/ atau beberapa pembanding CPU.

Apa yang disebut hukum Moore sedang sekarat . Desktop saya yang berumur 3+ tahun di rumah (i3770K) dapat diganti (hari ini, Maret 2016) oleh beberapa i6700 yang hanya 20% lebih cepat.


7

Angka-angka tidak dimaksudkan untuk menjadi akurat. Ini adalah rasio antara lipat antara tingkatan yang penting.

Namun, ketika teknologi yang mengganggu muncul (mis. Komputasi awan, ethernet 10GB / 100GB, modul kernel jaringan baru, jaringan penyimpanan SSD, virtualisasi, dan penampung), angka-angka ini dapat dibatalkan karena tingkatan baru muncul, hilang, atau diacak-acak.

Ketika pemrograman pada tingkat yang sangat tinggi - di mana semua perhitungan, jaringan, penguraian, dll, dilakukan dengan menggunakan perpustakaan yang tidak ditulis sendiri, mengetahui angka kinerja operasi tingkat rendah mungkin tidak banyak membantu, karena kesempatan Anda untuk meningkatkan masing-masing Kinerja perpustakaan agak terbatas atau tidak mungkin.

Alih-alih, baca dokumentasi terkait kinerja dari setiap perpustakaan dengan cermat. Jika perpustakaan tidak disertai dengan itu, minta mereka - buatlah masalah. Atau pelajari cara membandingkan perangkat lunak dengan cara yang benar.

Memiliki pemahaman dasar tentang angka latensi adalah penting ketika Anda disewa oleh perusahaan yang mendesain dan memproduksi komponen perangkat lunak. Bandingkan dengan perusahaan yang mendesain dan memproduksi mobil dan setiap komponen yang ada di dalamnya - pepatah "menciptakan kembali roda" (karet, tekanan ban, tapak, dll.)

Sebagian besar perusahaan perangkat lunak tidak bekerja pada level komponen - seluruh sistem perangkat lunak fungsional dapat dibangun dari penyatuan komponen. Perusahaan perangkat lunak ini tidak perlu fokus pada cara merekayasa komponen dalam hal latensi; alih-alih mereka perlu mengevaluasi kualitas komponen yang mereka pilih.

Untuk meringkas, (1) sangat mungkin bahwa Anda tidak perlu tahu angka latensi; (2) kecuali jika Anda ingin disewa oleh perusahaan yang membuat komponen perangkat lunak (perpustakaan), baik untuk dijual atau untuk penggunaan internal (seperti di beberapa perusahaan perangkat lunak terbesar di dunia), (3) jika Anda memerlukan angka-angka itu, itu adalah tugas Anda untuk melakukan benchmark sendiri, dengan cara yang benar secara ilmiah, atau Anda tidak boleh bekerja pada komponen perangkat lunak.


3

Tidak ada yang mengklaim bahwa angka-angka ini akurat untuk perangkat keras apa pun.

Namun, mereka jauh, jauh lebih akurat daripada dugaan buta. Sayangnya, banyak orang yang mendasarkan kode mereka.


2

Mereka tidak sepenuhnya akurat, dan sebenarnya tidak dimaksudkan untuk itu.

Mereka (terutama pada jumlah yang lebih kecil) sedikit lebih baik daripada hanya urutan besarnya sekalipun. Hal lain adalah bahwa hal itu dapat membantu memahami hal-hal yang berdekatan, yang kadang-kadang disalahartikan orang sebagai jauh lebih jauh daripada yang sebenarnya. Untuk satu contoh nyata, beberapa orang menganggap bahwa salah duga cabang sering kali merupakan hal besar. Ini bisa menjadi masalah besar jika itu banyak diulang, tetapi tidak perlu mengorbankan sejumlah besar di mana saja dan di mana saja hanya untuk mendapatkan prediksi cabang yang lebih baik (misalnya, jika Anda membaca dari memori utama, atau bahkan cache L2 untuk meningkatkan prediksi cabang, itu mungkin rugi bersih).

Pada saat yang sama, ya, pesanan yang besar mungkin merupakan bagian yang paling berguna. Sebagai contoh, dibutuhkan sekitar 100 kali lebih lama untuk mengakses data dari memori utama daripada dari register. Ya, di satu mesin mungkin sekitar 97 kali lebih lama, dan di lain mesin mungkin lebih dekat ke 127 kali lebih lama. Ini hampir pasti akan lebih dekat ke 100 daripada 10 atau 1000 sekalipun.

Secara pribadi, saya cenderung menganggap sebagian besar dari ini mirip dengan pulau-pulau di, katakanlah, Samudra Pasifik. Kecepatan hard drive (misalnya) mungkin adalah pulau Hawaii. Kecepatan SSD adalah kepulauan Filipina. Ini menunjukkan peta pada skala yang cukup kecil untuk membuat masing-masing terlihat seperti satu titik. Jika kita memperbesar, itu jelas tidak benar - tetapi jarak antara dua rantai jauh lebih besar dari jarak antar pulau di rantai mana pun.


0

Tentu saja jumlahnya tidak dapat akurat untuk setiap mesin. Dan saya kira mereka tidak pernah seharusnya. Mereka menunjukkan perbedaan dalam urutan besarnya antara beberapa jenis operasi.

Anda dapat menemukan beberapa tautan dan data yang lebih bermanfaat dalam komentar dari data yang Anda tautkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.