<div dir="ltr">Thank you very much for your answer. It helps a lot. My Lustre version is 2.10. <div><br></div><div>For thread_min, when I set it to a number larger than 12, everything works well, but when I set it to a number smaller than 12, whatever value I set, it shows 8. </div><div><br></div><div>   # lctl set_param ost.OSS.ost.threads_min=10<br>    ost.OSS.ost.threads_min=10<br>    # lctl get_param ost.OSS.ost.threads_min<br>    ost.OSS.ost.threads_max=8<br></div><div><br></div><div>My cluster has 4 OSS and 3 clients.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Nov 3, 2020 at 5:00 PM Andreas Dilger <<a href="mailto:adilger@dilger.ca">adilger@dilger.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Nov 3, 2020, at 9:25 AM, Youbiao He <<a href="mailto:yh54@iastate.edu" target="_blank">yh54@iastate.edu</a>> wrote:<br>
> I have installed lustre file system on CentOS. It works well when I write or read files. But when I try to set the thread_started and thread_min for oss services, I met the following problem.<br>
<br>
It is always important to include the Lustre release version that you are using in any problem report.<br>
<br>
> To set parameters, I run: "sudo lctl set_param ost.OSS.ost.threads_started=36"<br>
> then, I check the setting value by running: "lctl get_param ost.OSS.ost.threads_started", and then it shows "ost.OSS.ost.threads_started=21". So I can not change the parameter "ost.OSS.ost.threads_started".<br>
<br>
The "threads_started" parameter is read-only, and lists the number of threads currently running. I agree that "lctl set_param" should probably print an error for the user in this case.  You can see which parameters are writable by the '=' after the parameter name:<br>
<br>
    $ lctl list_param -F ost.OSS.ost.threads*<br>
    ost.OSS.ost.threads_max=<br>
    ost.OSS.ost.threads_min=<br>
    ost.OSS.ost.threads_started<br>
<br>
The underlying writable /proc or /sys files also has mode 644 instead of 444:<br>
<br>
    $ ls -l /proc/fs/lustre/ost/OSS/ost/threads_*<br>
    0 -rw-r--r-- 1 root root 0 Nov  3 15:53 /proc/fs/lustre/ost/OSS/ost/threads_max<br>
    0 -rw-r--r-- 1 root root 0 Nov  3 15:53 /proc/fs/lustre/ost/OSS/ost/threads_min<br>
    0 -r--r--r-- 1 root root 0 Nov  3 15:53 /proc/fs/lustre/ost/OSS/ost/threads_started<br>
<br>
There *is* an non-zero command status returned to the caller, but it is not obvious:<br>
<br>
    # lctl set_param ost.OSS.ost.threads_started=38<br>
    # echo $?<br>
    5<br>
<br>
<br>
> Another problem is on the parameter "ost.OSS.ost.threads_min", When I set it to 10 using lctl, and it shows the parameter is set to 8, not 10.<br>
<br>
In my testing, this seems to work OK:<br>
<br>
    # lctl get_param ost.OSS.ost.*thread*<br>
    ost.OSS.ost.threads_max=64<br>
    ost.OSS.ost.threads_min=3<br>
    ost.OSS.ost.threads_started=36<br>
    # lctl set_param ost.OSS.ost.threads_min=8<br>
    ost.OSS.ost.threads_min=8<br>
    # lctl get_param ost.OSS.ost.*thread*<br>
    ost.OSS.ost.threads_max=64<br>
    ost.OSS.ost.threads_min=8<br>
    ost.OSS.ost.threads_started=36<br>
<br>
Writing to threads_min at runtime doesn't change the current number of running threads.  More service threads are only started when there are enough concurrently processed requests to start new threads, but it will no longer *stop* threads once threads_min is hit.<br>
<br>
    # lctl set_param ost.OSS.ost.threads_min=48<br>
    ost.OSS.ost.threads_min=48<br>
    # lctl get_param ost.OSS.ost.threads*<br>
    ost.OSS.ost.threads_max=64<br>
    ost.OSS.ost.threads_min=48<br>
    ost.OSS.ost.threads_started=36<br>
<br>
Cheers, Andreas<br>
<br>
<br>
<br>
<br>
<br>
</blockquote></div>