Sekali lagi saya berada dalam tinjauan desain, dan menemukan klaim bahwa probabilitas skenario tertentu adalah "kurang dari risiko sinar kosmik" yang memengaruhi program, dan terpikir oleh saya bahwa saya tidak tahu apa itu. probabilitas adalah.
"Karena 2 -128 adalah 1 dari 340282366920938463463374607431768211456, saya pikir kami dibenarkan dalam mengambil peluang kami di sini, bahkan jika perhitungan ini dimatikan oleh faktor beberapa miliar ... Kami jauh lebih berisiko terhadap sinar kosmik untuk mengacaukan kita, saya percaya. "
Apakah programmer ini benar? Berapa probabilitas sinar kosmik mengenai komputer dan memengaruhi eksekusi program?
statistics
physics
probability
error-detection
risk-analysis
Mark Harrison
sumber
sumber
finally
blok, kita harus memenuhi syarat dengan "selalu dijalankan kecuali jika program keluar, atau jika dipukul dengan sinar kosmik"?Jawaban:
Dari Wikipedia :
Ini berarti probabilitas 3,7 × 10 -9 per byte per bulan, atau 1,4 × 10 -15 per byte per detik. Jika program Anda berjalan selama 1 menit dan menempati 20 MB RAM, maka kemungkinan kegagalannya
Pemeriksaan kesalahan dapat membantu mengurangi akibat kegagalan. Juga, karena ukuran chip yang lebih ringkas seperti yang dikomentari oleh Joe, tingkat kegagalannya bisa berbeda dari 20 tahun yang lalu.
sumber
Ternyata, tidak sepele. Dari artikel New Scientist ini , kutipan dari aplikasi paten Intel:
Anda dapat membaca paten selengkapnya di sini .
sumber
catatan: jawaban ini bukan tentang fisika, tetapi tentang kesalahan memori diam dengan modul memori non-ECC. Beberapa kesalahan mungkin berasal dari luar angkasa, dan beberapa - dari ruang dalam desktop.
Ada beberapa studi tentang kegagalan memori ECC pada server pertanian besar seperti cluster CERN dan pusat data Google. Perangkat keras kelas server dengan ECC dapat mendeteksi dan memperbaiki semua kesalahan bit tunggal, dan mendeteksi banyak kesalahan multi-bit.
Kita dapat berasumsi bahwa ada banyak desktop non-ECC (dan ponsel cerdas non-ECC). Jika kita memeriksa kertas untuk tingkat kesalahan yang dapat diperbaiki ECC (bitflips tunggal), kita dapat mengetahui tingkat kerusakan kehabisan memori pada memori non-ECC.
Studi CERN 2007 skala besar "Integritas data" : vendor menyatakan " Tingkat Kesalahan Bit 10 -12 untuk modul memori mereka ", " tingkat kesalahan yang diamati adalah 4 kali lipat lebih rendah dari yang diharapkan ". Untuk tugas-tugas intensif data (8 GB / s membaca memori) ini berarti bahwa flip bit tunggal dapat terjadi setiap menit (10 -12 vendor BER) atau sekali dalam dua hari (10 -16 BER).
Makalah Google 2009 "Kesalahan DRAM di Alam: Studi Lapangan Skala Besar" mengatakan bahwa mungkin ada 25.000-75.000 FIT per-bit per Mbit ( kegagalan dalam waktu per miliar jam ), yang sama dengan 1 - 5 bit kesalahan per jam untuk 8GB RAM setelah perhitungan saya. Makalah mengatakan hal yang sama: " berarti tingkat kesalahan yang dapat diperbaiki 2000-6000 per GB per tahun ".
Laporan Sandia 2012 "Deteksi dan Koreksi Korupsi Data Senyap untuk Komputasi Kinerja Tinggi Skala Besar" : "flips bit ganda dianggap tidak mungkin" tetapi pada ORNL's Cray XT5 yang padat mereka "pada laju satu per hari untuk 75.000+ DIMM" bahkan dengan ECC. Dan kesalahan bit tunggal harus lebih tinggi.
Jadi, jika program memiliki dataset besar (beberapa GB), atau memiliki tingkat baca atau tulis memori yang tinggi (GB / s atau lebih), dan itu berjalan selama beberapa jam, maka kita dapat mengharapkan beberapa bit bit diam pada perangkat keras desktop. Tingkat ini tidak dapat dideteksi oleh memtest, dan modul DRAM baik.
Cluster panjang berjalan pada ribuan PC non-ECC, seperti komputasi grid luas internet BOINC akan selalu memiliki kesalahan dari memori bit-flip dan juga dari kesalahan disk dan jaringan diam.
Dan untuk mesin yang lebih besar (10 ribu server) bahkan dengan perlindungan ECC dari kesalahan bit tunggal, seperti yang kita lihat dalam laporan Sandia 2012, bisa ada flips bit ganda setiap hari, sehingga Anda tidak akan memiliki peluang untuk menjalankan paralel ukuran penuh program selama beberapa hari (tanpa pemeriksaan rutin dan memulai kembali dari pemeriksaan bagus terakhir jika terjadi kesalahan ganda). Mesin-mesin besar juga akan mendapatkan bit-flip dalam cache dan register cpu mereka (baik pemicu arsitektur dan internal chip misalnya dalam ALU datapath), karena tidak semua dari mereka dilindungi oleh ECC.
PS: Keadaan akan jauh lebih buruk jika modul DRAM buruk. Sebagai contoh, saya menginstal DRAM baru ke laptop, yang mati beberapa minggu kemudian. Itu mulai memberi banyak kesalahan memori. Apa yang saya dapatkan: laptop hang, linux reboot, menjalankan fsck, menemukan kesalahan pada root filesystem dan mengatakan ingin melakukan reboot setelah memperbaiki kesalahan. Tetapi pada setiap reboot berikutnya (saya lakukan sekitar 5-6 dari mereka) masih ada kesalahan yang ditemukan pada sistem file root.
sumber
Wikipedia mengutip sebuah studi oleh IBM di tahun 90-an yang menyatakan bahwa "komputer biasanya mengalami satu kesalahan yang diinduksi oleh sinar kosmik per 256 megabyte RAM per bulan." Sayangnya kutipannya adalah artikel di Scientific American, yang tidak memberikan referensi lebih lanjut. Secara pribadi, saya menemukan angka itu sangat tinggi, tetapi mungkin sebagian besar kesalahan memori yang disebabkan oleh sinar kosmik tidak menyebabkan masalah aktual atau masalah nyata.
Di sisi lain, orang berbicara tentang probabilitas ketika datang ke skenario perangkat lunak biasanya tidak tahu apa yang mereka bicarakan.
sumber
Yah, sinar kosmik rupanya menyebabkan elektronik di mobil Toyota tidak berfungsi, jadi saya akan mengatakan bahwa probabilitasnya sangat tinggi :)
Apakah sinar kosmik benar-benar menyebabkan kesengsaraan Toyota?
sumber
Dengan ECC Anda dapat memperbaiki kesalahan 1 bit dari Cosmic Rays. Untuk menghindari 10% kasus di mana sinar kosmik menghasilkan 2-bit-error, sel-sel ECC biasanya disisipkan di atas chip sehingga tidak ada dua sel yang bersebelahan. Peristiwa sinar kosmik yang mempengaruhi dua sel karenanya akan menghasilkan dua kesalahan 1bit yang dapat diperbaiki.
Sun menyatakan: (Bagian No. 816-5053-10 April 2002)
sumber
Kesalahan memori itu nyata, dan memori ECC memang membantu. Memori ECC yang diterapkan dengan benar akan memperbaiki kesalahan bit tunggal dan mendeteksi kesalahan bit ganda (menghentikan sistem jika kesalahan seperti itu terdeteksi.) Anda dapat melihat ini dari seberapa sering orang mengeluh tentang apa yang tampaknya menjadi masalah perangkat lunak yang diselesaikan dengan menjalankan Memtest86 dan menemukan memori buruk. Tentu saja kegagalan sementara yang disebabkan oleh sinar kosmik berbeda dengan sepotong memori yang gagal secara konsisten, tetapi relevan dengan pertanyaan yang lebih luas tentang seberapa besar Anda harus memercayai memori Anda untuk beroperasi dengan benar.
Analisis yang didasarkan pada ukuran penduduk 20 MB mungkin sesuai untuk aplikasi sepele, tetapi sistem besar secara rutin memiliki beberapa server dengan memori utama yang besar.
Tautan menarik: http://cr.yp.to/hardware/ecc.html
Sayangnya, tautan Corsair di halaman itu sudah mati.
sumber
Ini adalah masalah nyata, dan itulah sebabnya memori ECC digunakan di server dan sistem embedded. Dan mengapa sistem terbang berbeda dari yang berbasis darat.
Misalnya, perhatikan bahwa komponen Intel yang ditujukan untuk aplikasi "tertanam" cenderung menambahkan ECC ke lembar spesifikasi. Bay Trail untuk tablet tidak memilikinya, karena itu akan membuat memori sedikit lebih mahal dan mungkin lebih lambat. Dan jika tablet crash program sekali dalam bulan biru, pengguna tidak terlalu peduli. Perangkat lunak itu sendiri jauh lebih tidak dapat diandalkan daripada HW. Tetapi untuk SKU yang dimaksudkan untuk digunakan dalam mesin industri dan otomotif, ECC adalah wajib. Karena di sini, kami berharap SW jauh lebih andal, dan kesalahan dari gangguan acak akan menjadi masalah nyata.
Sistem yang disertifikasi untuk IEC 61508 dan standar serupa biasanya memiliki kedua tes boot-up yang memeriksa bahwa semua RAM berfungsi (tidak ada bit yang macet pada nol atau satu), serta penanganan kesalahan pada saat runtime yang mencoba untuk pulih dari kesalahan yang terdeteksi oleh ECC, dan sering juga tugas-tugas scrubber memori yang melalui dan membaca dan menulis memori terus menerus untuk memastikan bahwa setiap kesalahan yang terjadi dapat diketahui.
Tetapi untuk perangkat lunak PC mainstream? Bukan masalah besar. Untuk server berumur panjang? Gunakan ECC dan penangan kesalahan. Jika kesalahan yang tidak dapat diperbaiki membunuh kernel, maka lakukanlah. Atau Anda menjadi paranoid dan menggunakan sistem redundan dengan eksekusi kunci-langkah sehingga jika satu core rusak, yang lain bisa mengambil alih ketika core pertama reboot.
sumber
Jika sebuah program kritis terhadap kehidupan (itu akan membunuh seseorang jika gagal), program itu harus ditulis sedemikian rupa sehingga akan gagal-aman, atau pulih secara otomatis dari kegagalan tersebut. Semua program lain, YMMV.
Toyota adalah contohnya. Katakan apa yang Anda mau tentang kabel throttle, tetapi ini bukan perangkat lunak.
Lihat juga http://en.wikipedia.org/wiki/Therac-25
sumber
Saya pernah memprogram perangkat yang terbang di luar angkasa, dan kemudian Anda (seharusnya, tidak ada yang pernah menunjukkan kepada saya kertas tentang hal itu, tetapi dikatakan sebagai pengetahuan umum dalam bisnis) dapat mengharapkan sinar kosmik untuk menyebabkan kesalahan sepanjang waktu.
sumber
"peristiwa sinar kosmik" dianggap memiliki distribusi yang seragam dalam banyak jawaban di sini, ini mungkin tidak selalu benar (yaitu supernova). Meskipun "sinar kosmik" menurut definisi (setidaknya menurut Wikipedia) berasal dari luar angkasa, saya pikir wajar juga untuk memasukkan badai matahari lokal (alias ejeksi massa koronal) bawah payung yang sama. Saya percaya itu dapat menyebabkan beberapa bit untuk tergelincir dalam suatu jangka waktu pendek, cukup berpotensi untuk merusak bahkan memori yang mendukung ECC.
Sudah diketahui umum bahwa badai matahari dapat menyebabkan malapetaka dengan sistem listrik (seperti pemadaman listrik Quebec pada Maret 1989) ). Sangat mungkin bahwa sistem komputer juga dapat terpengaruh.
Sekitar 10 tahun yang lalu saya duduk tepat di sebelah pria lain, kami duduk dengan laptop masing-masing, itu dalam periode dengan cuaca matahari cukup "badai" (duduk di Arktik, kita bisa mengamati ini secara tidak langsung - banyak aurora borealis ke terlihat). Tiba-tiba - pada saat yang sama - kedua laptop kami mogok. Dia menjalankan OS X, dan saya menjalankan Linux. Tidak satu pun dari kita yang terbiasa dengan laptop yang mogok - itu adalah hal yang sangat langka di Linux dan OS X. Bug perangkat lunak umum dapat lebih atau kurang dapat dikesampingkan karena kami menjalankan pada OS yang berbeda (dan itu tidak terjadi selama lompatan kedua). Saya datang untuk menghubungkan peristiwa itu dengan "radiasi kosmik".
Belakangan, "radiasi kosmik" telah menjadi lelucon internal di tempat kerja saya. Setiap kali sesuatu terjadi dengan server kami dan kami tidak dapat menemukan penjelasan untuk itu, kami bercanda atribut kesalahan untuk "radiasi kosmik". :-)
sumber
Lebih sering, noise dapat merusak data. Checksum digunakan untuk melawan ini di banyak tingkatan; dalam kabel data biasanya ada bit paritas yang bergerak di samping data. Ini sangat mengurangi kemungkinan korupsi. Kemudian pada level parsing, data nonsense biasanya diabaikan, jadi bahkan jika beberapa korupsi tidak melewati bit paritas atau checksum lainnya, dalam banyak kasus akan diabaikan.
Juga, beberapa komponen terlindung secara elektrik untuk memblokir kebisingan (mungkin bukan sinar kosmik yang saya kira).
Tetapi pada akhirnya, seperti yang dikatakan oleh penjawab lain, ada bit atau byte sesekali yang teracak, dan terserah peluang apakah itu byte signifikan atau tidak. Skenario kasus terbaik, sinar kosmik mengacak salah satu bit kosong dan sama sekali tidak berpengaruh, atau membuat crash komputer (ini adalah hal yang baik, karena komputer dijaga agar tidak membahayakan); tetapi kasus terburuk, well, saya yakin Anda bisa membayangkan.
sumber
Saya pernah mengalami ini - Tidak jarang sinar kosmik terbalik sedikit, tetapi sangat tidak mungkin seseorang mengamati ini.
Saya sedang mengerjakan alat kompresi untuk installer pada tahun 2004. Data pengujian saya adalah beberapa file instalasi Adobe sekitar 500 MB atau lebih terdekompresi.
Setelah menjalankan kompresi yang membosankan, dan menjalankan dekompresi untuk menguji integritas, FC / B menunjukkan satu byte yang berbeda.
Dalam satu byte itu MSB telah terbalik. Saya juga membalik, khawatir bahwa saya memiliki bug gila yang hanya akan muncul di bawah kondisi yang sangat spesifik - saya bahkan tidak tahu harus mulai dari mana.
Tapi ada yang memberitahuku untuk menjalankan tes lagi. Saya menjalankannya dan itu berlalu. Saya membuat skrip untuk menjalankan tes 5 kali dalam semalam. Di pagi hari semua 5 telah berlalu.
Jadi itu pasti flip bit sinar kosmik.
sumber
Anda mungkin ingin melihat perangkat keras Fault Tolerant juga.
Sebagai contoh Stratus Technology membangun server Wintel yang disebut ftServer yang memiliki 2 atau 3 "mainboards" dalam langkah-kunci, membandingkan hasil perhitungan. (Terkadang ini juga dilakukan di kendaraan luar angkasa).
Server Stratus berevolusi dari chipset khusus menjadi pengunci di backplane.
Sistem yang sangat mirip (tetapi perangkat lunak) adalah VMWare Fault Tolerance lockstep berdasarkan Hypervisor.
sumber
Sebagai titik data, ini baru saja terjadi pada versi kami:
Itu terlihat sangat kuat seperti sedikit flip terjadi selama kompilasi, di tempat yang sangat signifikan dalam file sumber secara kebetulan.
Saya tidak perlu mengatakan ini adalah "sinar kosmik", tetapi gejalanya cocok.
sumber