Project

General

Profile

Actions

Feature #1141

closed

allow NFSv3 server FSINFO tunables to be tuned

Added by Richard Elling over 10 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
nfs - NFS server and client
Start date:
2011-06-23
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:

Description

This simple change allows NFSv3 server FSINFO tunables to be tuned.

$ diff nfs_common.c nfs_common.c.orig
304,306c304,306
< uint_t nfs3_max_transfer_size_clts = 32 * 1024;
< uint_t nfs3_max_transfer_size_cots = 1024 * 1024;
< uint_t nfs3_max_transfer_size_rdma = 1024 * 1024;
---

static uint_t nfs3_max_transfer_size_clts = 32 * 1024;
static uint_t nfs3_max_transfer_size_cots = 1024 * 1024;
static uint_t nfs3_max_transfer_size_rdma = 1024 * 1024;


Related issues

Is duplicate of illumos gate - Bug #3720: Tunables needs volatile keywordIn ProgressMarcel Telka2013-04-16

Actions
Actions #1

Updated by Richard Elling over 10 years ago

Also affects NFSv4, http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/fs/nfs/nfs4_common.c#61

Also note that the Solaris Tunable Parameters Guide documents these as tunable. Obviously, they are not.

Actions #2

Updated by Rich Lowe over 10 years ago

Why are you thinking that these aren't tunable? (can /etc/system not poke them? mdb sure can.)

Actions #3

Updated by Richard Elling over 10 years ago

  1. dtrace -n 'fbt:nfs:rfs3_tsize:return {printf("%Y\t%d\n", walltimestamp, args1);}'
    dtrace: description 'fbt:nfs:rfs3_tsize:return ' matched 1 probe
    CPU ID FUNCTION:NAME
    1 60794 rfs3_tsize:return 2011 Jun 22 15:35:17 1048576

    3 60794 rfs3_tsize:return 2011 Jun 22 15:35:24 1048576

    0 60794 rfs3_tsize:return 2011 Jun 22 15:35:28 1048576

    1 60794 rfs3_tsize:return 2011 Jun 22 15:35:28 1048576

    1 60794 rfs3_tsize:return 2011 Jun 22 15:35:28 1048576

    3 60794 rfs3_tsize:return 2011 Jun 22 15:35:28 1048576

    1 60794 rfs3_tsize:return 2011 Jun 22 15:35:29 1048576

^C

  1. echo nfs3_max_transfer_size_clts/D | mdb -k
    nfs3_max_transfer_size_clts:
    nfs3_max_transfer_size_clts: 32768
  2. echo nfs3_max_transfer_size_cots/D | mdb -k
    nfs3_max_transfer_size_cots:
    nfs3_max_transfer_size_cots: 131072
  3. echo nfs3_max_transfer_size_rdma/D | mdb -k
    nfs3_max_transfer_size_rdma:
    nfs3_max_transfer_size_rdma: 131000
Actions #4

Updated by Richard Elling over 10 years ago

Again, protecting from markups...

# dtrace -n 'fbt:nfs:rfs3_tsize:return {printf("%Y\t%d\n", walltimestamp, args[1]);}'
dtrace: description 'fbt:nfs:rfs3_tsize:return ' matched 1 probe
CPU     ID                    FUNCTION:NAME
 1  60794                rfs3_tsize:return 2011 Jun 22 15:35:17        1048576

 3  60794                rfs3_tsize:return 2011 Jun 22 15:35:24        1048576

 0  60794                rfs3_tsize:return 2011 Jun 22 15:35:28        1048576

 1  60794                rfs3_tsize:return 2011 Jun 22 15:35:28        1048576

 1  60794                rfs3_tsize:return 2011 Jun 22 15:35:28        1048576

 3  60794                rfs3_tsize:return 2011 Jun 22 15:35:28        1048576

 1  60794                rfs3_tsize:return 2011 Jun 22 15:35:29        1048576

^C

# echo nfs3_max_transfer_size_clts/D | mdb -k
nfs3_max_transfer_size_clts:
nfs3_max_transfer_size_clts:    32768           
# echo nfs3_max_transfer_size_cots/D | mdb -k
nfs3_max_transfer_size_cots:
nfs3_max_transfer_size_cots:    131072          
# echo nfs3_max_transfer_size_rdma/D | mdb -k
nfs3_max_transfer_size_rdma:
nfs3_max_transfer_size_rdma:    131000
Actions #5

Updated by Rich Lowe over 10 years ago

Yeah, I synced up with Garrett on IRC. I'm working on something (tangentially) related, and was mislead by comments in other parts of the code (which claim that Studio on x86 won't eliminate these statics. What it means is that it won't eliminate the symbol it will inline the constant references).

Totally threw me (and made a bunch of work for me).

On the other hand, it opens up a mechanism to find these issues. If you look at Makefile.master, you'll see CCSTATICSYM, and a comment describing what's going on. If you do a SPARC build, save the proto, and do another with CCSTATICSYM="" you should be able to detect missing tunables, etc, in the wsdiff output of the two protos.

Actions #6

Updated by Marcel Telka over 8 years ago

  • Category set to nfs - NFS server and client
  • Assignee set to Marcel Telka
Actions #7

Updated by Marcel Telka over 8 years ago

  • Status changed from New to Closed

This will be fixed as a part of #3720. Closing.

Actions

Also available in: Atom PDF