NFS lambat, nfsstat -c: apa bidang authrefrsh (alias newcreds?) Secara detail?

10

(net-fs / nfs-utils-1.2.3-r1, 2.6.38.5-zen + Gentoo)

Googling ini tampaknya jalan buntu. man nfsstat mengatakan banyak tentang subjek. Yang paling dekat yang bisa saya dapatkan adalah mencari tahu tentang apa yang sebelumnya mungkin " kredit baru ".

newcreds Jumlah kali informasi otentikasi harus di-refresh.

Masalah saya adalah saya pikir saya melihat kinerja NFS di bawah standar atas OpenVPN dan satu-satunya hal yang saya dapat segera lihat yang secara signifikan berbeda dari semua hasil nfsstat Google, adalah bahwa bidang "panggilan" saya sama persis dengan "authrefrsh" dan karena itu sangat tinggi . Semua output hasil pencarian selalu memiliki authrefrsh sebagai 0 atau angka yang sangat rendah. Sebelum saya bisa beralih ke debugging beberapa aspek lain, saya bisa menggunakan mencari tahu apa artinya ini.

Operasi yang diawasi sedang memunculkan sebuah paket melalui portage yang dibagikan NFS. emerge memang melintasi pohon besar selama operasinya tetapi pengalaman sebelumnya mengatakan bahwa kinerja yang saya lihat tidak normal.

$ watch -n 1 nfsstat -c

Every 1,0s: nfsstat -c                                Sat May 21 23:04:55 2011

Client rpc stats:
calls      retrans    authrefrsh
308565     2211       308565

Client nfs v3:
null         getattr      setattr      lookup       access       readlink
0         0% 172372   55% 17        0% 30485     9% 36057    11% 26831     8%
read         write        create       mkdir        symlink      mknod
25879     8% 107       0% 21        0% 0         0% 0         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus
16        0% 0         0% 11        0% 0         0% 0         0% 16668     5%
fsstat       fsinfo       pathconf     commit
3         0% 50        0% 25        0% 2         0%

Saya tidak tahu persis apa itu authrefrsh (dan ejaan ini, apakah itu disengaja?) Dan mengapa itu meningkat seperti ini dalam kasus saya?

lkraav
sumber
Ketika Anda mengatakan NFS lambat, apa yang membuat Anda percaya bahwa kinerja NFS harus lebih cepat? Bisakah Anda menghitung lambat? Apakah waktu hari penting kinerja WRT?
Mike Pennington
"NFS Lambat" berarti lalu lintas NFS seharusnya tidak mengalami masalah dalam mengambil seluruh bandwidth yang tersedia, yang lebih dari VPN tidak sebanyak itu (100 kB / detik). Sebaliknya iftop menunjukkan kepada saya lalu lintas hanya satu digit kB / detik melalui tun0. Saya percaya saya telah mempersempit masalahnya menjadi Portage yang menyatakan beberapa ribu paket di PKGDIR saya selama menjalankan emerge binpkg terkait, yang tampaknya operasi yang luar biasa lambat. Dari apa yang dapat saya katakan sejauh ini, solusi terbaik mungkin dengan memperbarui portage squashfs secara rutin pada workstation jarak jauh dan mendapatkan binpkgs melalui HTTP binhost, alih-alih PKGDIR yang dipasang di NFS.
lkraav
Adakah pembaruan tentang ini? Saya perhatikan kinerja klien NFS yang lebih buruk dengan server SLES 11 dan CentOS 6 yang lebih baru bila dibandingkan dengan server SLES 9 kami yang lebih lama. Klien SLES 9 lebih cepat, dan juga tampil authrefrsh=0, sementara OS yang lebih baru menunjukkan banyak authrefrsh. Saya pikir ada korelasi di sini, tetapi tidak yakin apa artinya semua ini.
Banjer
Apa jenis otentikasi NFS yang Anda lakukan? AUTH_SYS?
Bratchley
Untuk menjawab bagian dari pertanyaan Anda, authrefrsh adalah berapa kali klien NFS menelepon call_refresh()yang pada dasarnya pergi ke server RPC (portmap, rpcbind, dll) dan memvalidasi kredensial dengan server. Kita perlu mencari tahu apakah itu sebenarnya yang menyebabkan latensi. Jika Anda melakukannya AUTH_SYSmaka biaya overhead rendah dan tidak akan menjadi penyebabnya.
Bratchley

Jawaban:

5

Dari artikel Red Hat di komentar solusinya

Ini adalah perilaku yang diharapkan.

Tidak terlalu membantu tetapi juga menunjukkan alasan itu terjadi.

Ini merujuk komit a17c2153d2e271b0cbacae9bed83b0eaa41db7e1 dalam paket sunrpc yang bergerak di mana otentikasi nfs terjadi. Saya tidak akan menyalin / menempelkan seluruh komit, tetapi sebagian besar mengubah baris ini.

-struct rpc_cred *cred = task->tk_msg.rpc_cred;
+struct rpc_cred *cred = task->tk_rqstp->rq_cred;

Pemahaman saya yang terbatas adalah bahwa baris ini bergerak di tempat call_refresh () terjadi (lebih cepat daripada nanti). Ini pada gilirannya berarti sebagian besar semua permintaan nfs akan menyebabkan authrefrsh bertambah karena otentikasi selalu digunakan.

Rothgar
sumber
1

Saya melihat hal yang sama (tidak menggunakan vpn) - authrefrsh == panggilan di sisi klien. Bagi saya sepertinya jumlah panggilan meningkat, kemudian melambat, dan jumlah authrefrsh kemudian naik.

Statistik rpc klien:

calls      retrans    authrefrsh
261697     0          261697

Saya melihat iowait sangat tinggi juga:

dd if=/dev/zero of=/mnt/omoikane/testfile bs=16k count=2048

(dari iostat :)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          4.04    0.00    4.04   91.92    0.00    0.00

Saya tidak dapat melihat sesuatu yang tidak biasa di wireshark - Saya menggunakan nfs3 dan tcp.

Andy
sumber
1

Dari apa yang saya mengerti dari tautan ini, authrefresh = panggilan tidak menunjukkan masalah.

https://bugzilla.redhat.com/show_bug.cgi?id=785931

Gene O
sumber
Selamat datang di Unix & Linux! Secara umum kami menyukai jawaban di situs untuk dapat berdiri sendiri - Tautan bagus, tetapi jika tautan itu putus, jawabannya harus memiliki informasi yang cukup untuk tetap membantu. Silakan pertimbangkan untuk mengedit jawaban Anda untuk memasukkan lebih detail. Lihat FAQ untuk info lebih lanjut.
slm
apa yang mereka maksud adalah mereka tidak yakin itu penyebab masalah atau hanya naik karena itu. "Meroket" jelas menandakan bahwa segalanya tidak baik. sama halnya ini sebagian besar terlihat paralel dengan masalah perf jelek.
Florian Heigl