Apakah ada cara sederhana dan aman untuk memicu penguncian GPU pada komputer yang rentan?

8

Jawaban untuk pertanyaan saya sebelumnya, Ubuntu 12.04 membeku, membutuhkan powercycle. Apa yang harus saya perhatikan / ambil dalam log? , telah membuat saya curiga bahwa komputer saya mengalami penguncian GPU intermiten. Ini terjadi sekitar seminggu sekali, biasanya ketika saya menggunakan Chrome. Hari ini terjadi ketika saya membuat diagram di lucidchart

Saya memiliki Dell Optiplex 755 dengan ATI Radeon HD 2400 XT dan monitor ganda yang berjalan dalam mode Xinerama. Saya menggunakan 12,04 dengan driver ATI berpemilik diinstal.

Ketika komputer terkunci, saya masih dapat melakukan ssh. Dan saya ingin mengikuti instruksi tentang pelaporan yang disediakan di https://wiki.ubuntu.com/X/Troubleshooting/Freeze ini.

Apakah ada cara (aman) untuk menyebabkan penguncian GPU sehingga saya dapat melanjutkan dan mengajukan bug, daripada menunggu sampai terjadi lagi?

Abe
sumber

Jawaban:

11

Pertanyaan yang sangat bagus

Beban kerja

Direktori / usr / share / xdiagnose / workloads memiliki serangkaian beban kerja yang dirancang untuk menjalankan sistem grafis Anda untuk memicu penguncian.

$ ls /usr/share/xdiagnose/workloads/
README                       do_monitor_rotation_loop
do_chws_loop*                do_screensaver_loop*
do_cpu_spin_loop             do_video_loop*
do_disk_write_loop           do_vtswitch_loop*
do_glx_loop*                 repro.sh
do_kernel_compile_loop       run_workloads
do_monitor_disable_loop*     youtube-loop.html
do_monitor_resolution_loop*  youtube-reload.html

Perhatikan bahwa untuk menjalankannya Anda harus melewati 'jalankan'. Misalnya:

$ do_glx_loop dijalankan

Tanpa argumen, skrip akan menampilkan penggunaan. Sebagian itu untuk keamanan (kalau-kalau orang hanya menjalankan skrip secara membabi buta), tetapi sebagian besar untuk menjaga agar skrip tetap rapi.

Yang saya bintangi mungkin yang terbaik untuk memulai. Saya akan mulai dengan menjalankan hanya satu skrip sekaligus dan membiarkannya berjalan beberapa jam. Jika sistem Anda bertahan cukup baik, maka coba jalankan dua atau lebih secara bersamaan.

Catatan saya sendiri belum menguji ini dengan sangat berat, jadi saya tidak bisa menjanjikan mereka bebas bug. Tapi itu skrip yang cukup pendek dan sederhana sehingga mudah-mudahan mudah diperbaiki, dan tambalan yang baik sangat disambut.

Perhatikan juga bahwa mereka kemungkinan besar dapat memicu penguncian yang tidak terkait dengan yang sedang Anda coba pecahkan. Semua penguncian GPU umumnya terlihat identik dengan mata yang tidak terlatih karena memiliki gejala yang sama persis, kurang lebih.

Log

Jika Anda menggunakan Intel Graphics, ada / sys / kernel / debug / dri / 0 / i915_error_state yang Anda inginkan. Ini adalah snapshot dari status register pada saat hang, dan bagian atasnya berisi beberapa kode kesalahan. IPEHR, PGTBL_ER, ESR, EIR. Cocokkan kode-kode itu untuk mengetahui apakah Anda memiliki kesalahan yang sama atau serupa.

Jika Anda tidak menggunakan Intel Graphics (seperti dalam kasus ini Anda tidak), atau jika Anda tidak melihat file i915_error_state dihasilkan, maka dmesg dan /var/log/kern.log adalah apa yang harus dilihat. Terkadang dengan penguncian gpu, mereka akan menunjukkan apa yang diakibatkan oleh atau dalam penguncian GPU.

Driver open source -ati memiliki radeontool dan avivotool, yang menangkap status register. Ini utamanya untuk opensource -ati, tetapi alat-alatnya juga harus bekerja dengan -fglrx. Saya belum pernah melihatnya meminta bug -fglrx, tetapi tentu saja tidak ada salahnya.

Pengujian

Untuk semua driver, langkah selanjutnya biasanya mulai menguji versi driver yang lebih baru atau lebih lama. Untuk driver berpemilik, Anda dapat memeriksa ppa pembaruan x tetapi mungkin Anda harus mengunduh dan menginstal driver secara manual dari situs web vendor (dan mengacaukan kemasan sistem Anda dengan melakukan hal itu). Untuk driver FOSS seperti -intel, -nouveau, -ati yang berarti menguji kernel yang lebih baru atau mesa yang lebih baru. Kami menyediakan paket kernel baru di http://kernel.ubuntu.com/~kernel-ppa/mainline/ . Untuk mesa, ada berbagai AKP seperti xorg-edgers. Saya juga sedang dalam proses mempersiapkan pembaruan 8.0.3 untuk tepat, yang kami percaya memperbaiki sejumlah penguncian untuk Intel Graphics.

Bagaimanapun, jangan berhenti ketika Anda menemukan versi yang berfungsi. Coba versi lain di antara versi kerja Anda dan yang rusak. Jika Anda dapat mempersempit braket ke dua versi yang berdekatan, itu bisa sangat membantu bagi pengembang dalam mengisolasi apa patch yang menyebabkan regresi.

Berkontribusi

Saat Anda menjalani pemecahan masalah, Anda mungkin menemukan kesalahan, atau mungkin muncul dengan perbaikan untuk skrip atau dokumen. Kontribusi untuk semua ini disambut dengan hangat. Dengan dokumen wiki, silakan lakukan saja dan edit! Saya mencoba memperbarui mereka setidaknya setahun sekali, tetapi saya tidak selalu menyadarinya, dan orang berikutnya yang mengunjungi halaman tersebut pasti akan menghargai upaya Anda untuk memperbaikinya.

Untuk perubahan pada skrip sendiri, juga cukup disambut. Kirimi saya perubahan namun Anda merasa nyaman - sebagai tambalan, cabang bzr atau git, atau bahkan hanya salinan skrip. Jika Anda berencana untuk melakukan banyak perubahan, cabang bzr dengan proposal penggabungan adalah cara yang disukai; tutorial tentang cara melakukan ini tersedia di code.launchpad.net, atau jangan ragu untuk menangkap saya di IRC jika Anda memiliki pertanyaan.

Atau, jika Anda tidak siap untuk menggali ke dalam pengkodean tetapi ingin menandai kesalahan atau area di mana lebih banyak fungsi diperlukan, Anda dapat mengajukan laporan bug dengan cara biasa ( ubuntu-bug xdiagnose).

Perbaikan Cepat

Jika Anda tidak tertarik melakukan debugging di atas, berikut ini beberapa tips acak:

Untuk driver berpemilik, cobalah mencopot dan membersihkannya sepenuhnya dari sistem Anda, lalu instal ulang dari awal. Sayangnya ini "memecahkan" banyak bug ...

Untuk driver FOSS, ada berbagai sakelar kernel yang dapat Anda mainkan. Untuk bug 3D / mesa, ada juga driconf untuk mengubah berbagai pengaturan.

Akhirnya

Akhirnya, satu permintaan ... tolong jangan mengajukan laporan bug ke Launchpad tentang "pembekuan acak" sampai Anda telah melakukan setidaknya sedikit sleuthing seperti yang dijelaskan di atas. Kalau tidak, Anda hanya akan menambah kebisingan.

Kami mencoba mencari laporan bug yang diteliti dengan baik; kami menemukan ini untuk memberikan yang lebih tinggi untuk uang, dan jauh lebih mungkin berakhir dengan perbaikan yang sebenarnya untuk distro.

Bryce
sumber
terima kasih atas jawaban anda Apakah Anda penulis wiki beku pemecahan masalah yang ditautkan ? Tampaknya skrip xdiagnose / workloads harus disebutkan di sana - saya akan mengedit tetapi saya tidak yakin bahwa saya akan melakukannya sebaik Anda. Juga, Anda tidak menyebutkan menggunakan radeontool di sini, tetapi disebutkan di wiki. Haruskah saya masih menggunakan radeontool dalam kasus saya?
Abe
juga, akankah skrip yang menjalankan semua skrip dalam xdiagnose / workloads, berurutan dimulai dengan yang Anda asteriks, berguna? Terakhir, di mana saya bisa belajar cara mengirim perubahan?
Abe
Ini bug pertama yang saya temukan (saya pikir): do_chws_loop dan do_glx_loop membutuhkan wmctrl, do_glx_loop membutuhkan glxgears, tetapi kedua skrip "tidak menyertakan fungsionalitas untuk menguji dan menginstal apa yang dibutuhkan." seperti yang dijelaskan dalam README. Saya mungkin dapat mulai menambahkan fungsionalitas tersebut, tetapi apakah saya harus mengirim bug terlebih dahulu dan kemudian memperbaikinya? Dan, tidak apa-apa jika saya butuh lima baris jika ... yang lain ...? Atau ada 'cara yang disukai' ... dan apakah ini berarti skrip harus dijalankan sebagai root? ... mengapa memerlukan argumen "jalankan"? Maaf untuk semua pertanyaan, saya hanya ingin dapat membantu jika saya bisa.
Abe
Tentu, tidak masalah, saya akan memperbarui jawaban saya untuk membahas poin-poin itu.
Bryce
Mengenai set pertanyaan ketiga Anda. Ya memiliki tes skrip untuk apa yang mereka butuhkan sudah ada dalam daftar TODO saya. jika ... blok lain tentu merupakan titik awal yang baik. Pada akhirnya saya ingin agar pengguna dapat menjalankan skrip dari GUI, jadi ingin mereka "mengomunikasikan" persyaratan mereka kembali ke GUI sehingga dapat menghapusnya jika pengguna tidak memiliki persyaratan. Tapi saya masih jauh dari bisa melakukan itu, jadi hanya memeriksa sederhana untuk baris perintah adalah tempat yang tepat untuk memulai.
Bryce