Mengapa 'kucing' perilaku waktu aneh ini?


8

Saya menggunakan catuntuk mem-pipe file yang berbeda menjadi satu file besar. Jumlah file yang berbeda bervariasi, dari dua file hingga sepuluh, tetapi ukuran total semua file selalu sama (beberapa GB).

Masalah saya: Setiap kali saya sampai pada kasus di mana saya memiliki total enam file, waktu yang diperlukan untuk menggabungkannya mencapai puncak (yaitu lebih dari lima atau tujuh), dan saya tidak tahu mengapa.

Adakah yang punya ide?

File-file (semua ukuran yang sama)

output
outputTEMP1
outputTEMP2
outputTEMP3
outputTEMP4
outputTEMP5

Perintah

cat outputTEMP* >> output && rm -f outputTEMP*

Saat ini, Mesin harus melakukan beberapa perhitungan, tetapi saya akan memperbarui nanti ketika pengukuran baru tersedia.


Apa baris perintah yang Anda gunakan?
innaM

Saya menambahkan baris perintah.
brandstaetter

Ini benar-benar aneh. Saya tidak dapat memberi tahu Anda mengapa ini bertindak seperti ini, tetapi mungkin Anda harus mengajukan laporan bug teks biasa ke bug-coreutils@gnu.org.
Reynolds

Ukur itu! Dan pastikan Anda tidak melakukan caching saat mengukur!
Davide

Jawaban:


4

Salah satu cara untuk men-debug masalah ini adalah dengan menggunakan strace.

strace -tt -e trace=open,close -o /tmp/strace.cat.log cat apt.list authors.txt >/tmp/t.test
cat /tmp/strace.cat.log 

23:12:08.022588 open("apt.list", O_RDONLY|O_LARGEFILE) = 3
23:12:08.023451 close(3)                = 0
23:12:08.023717 open("authors.txt", O_RDONLY|O_LARGEFILE) = 3
23:12:08.025403 close(3)                = 0

Opsi -tt mencatat cap waktu panggilan sistem ke resolusi mili-detik. -e trace = buka, tutup log saja buka, tutup API. Coba hapus dan Anda akan melihat file log yang sangat bising.


2

Jadi komentar Davides tepat. Kami membutuhkan dua hal di sini, untuk melakukan penilaian yang akurat:

  1. caching jaminan bukan bagian dari skenario
  2. pengukuran aktual dari waktu yang dibutuhkan.

Dengan asumsi Anda memiliki ruang disk saya akan menjelaskan skenario pengujian yang akan lebih akurat menentukan apakah ini masalah nyata. Jika demikian, bukti pendukung dari pendekatan ini AKAN membantu pengembang untuk mengetahui itu nyata dan dapat mereproduksi itu.

Untuk membantu dengan isolasi masalah jangan lakukan bagian rm di sini sama sekali. biarkan file TEMP duduk setelahnya. Anda kemudian dapat mengulangi pengujian dengan melakukan bagian 'rm' nanti, jika diinginkan.

Inilah skenario pengujian:

  • buat 9 direktori - satu untuk setiap jumlah file (2 3 4 5 6 7 8 9 dan 10) - jika Anda tidak memiliki ruang, mungkin cukup lakukan 2, 5, 6, 7, dan 10.
  • pastikan Anda meletakkan file BERBEDA ke dalam masing-masing direktori ini; TIDAK ada duplikat di mana pun
  • gunakan perintah waktu seperti ini:

    waktu (cat outputTEMP * >> output)

Tangkap angka nyata, pengguna, dan sistem yang dilaporkan untuk setiap tes yang Anda jalankan.

Saya setuju dengan Reynolds; jika ini nyata, Anda harus mengirim email detail ke bug-coreutils@gnu.org.


Pikiran lain: Untuk memastikan Anda menyalin jumlah data TOTAL yang sama ke file output. Jadi, jika totalnya 1GB, dalam direktori '2' Anda akan memiliki file yang berukuran 1/2 GB, dan di direktori '10' Anda akan memiliki file yang berukuran 1/10 GB, dll
pbr
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.