mbox series

[v1,0/2] _rpc_dtablesize: decrease to fix excessive memory usage

Message ID cover.1698751763.git.zhuohao_bai@foxmail.com (mailing list archive)
Headers show
Series _rpc_dtablesize: decrease to fix excessive memory usage | expand

Message

Zhuohao Bai Oct. 31, 2023, 1:13 p.m. UTC
In the client code, the function _rpc_dtablesize() is used to determine the
memory allocation for the __svc_xports array.

However, some operating systems (including the recent Manjaro OS) can have
_SC_OPEN_MAX values as high as 1073741816, which can cause the __svc_xports
array to become too large. This results in the process being killed.

There is a limit to the maximum number of files. To avoid this problem, a
possible solution is to set the size to the lesser of 1024 and this value to
ensure that the array space for open files is not too large, thus preventing
the process from terminating.

Also discovered that some users have taken action on the issue. It is necessary
to address this for all users. Ultimately, we determined that adjusting the
size value of _rpc_dtablesize() and streamlining the existing user code would
be the most effective solution.


---
Changes in v1:
Clean up the existing code in user

---
Links: 
RFC:https://lore.kernel.org/linux-nfs/tencent_E6816C9AF53E61BA5E0A313BBE5E1D19B00A@qq.com/T/#u


Zhuohao Bai (2):
  _rpc_dtablesize: Decrease the value of size.
  _rpc_dtablesize: Cleaning up the existing code

 src/rpc_dtablesize.c | 2 ++
 src/svc.c            | 2 --
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Steve Dickson Jan. 5, 2024, 4:54 p.m. UTC | #1
On 10/31/23 9:13 AM, Zhuohao Bai wrote:
> In the client code, the function _rpc_dtablesize() is used to determine the
> memory allocation for the __svc_xports array.
> 
> However, some operating systems (including the recent Manjaro OS) can have
> _SC_OPEN_MAX values as high as 1073741816, which can cause the __svc_xports
> array to become too large. This results in the process being killed.
> 
> There is a limit to the maximum number of files. To avoid this problem, a
> possible solution is to set the size to the lesser of 1024 and this value to
> ensure that the array space for open files is not too large, thus preventing
> the process from terminating.
> 
> Also discovered that some users have taken action on the issue. It is necessary
> to address this for all users. Ultimately, we determined that adjusting the
> size value of _rpc_dtablesize() and streamlining the existing user code would
> be the most effective solution.
> 
> 
> ---
> Changes in v1:
> Clean up the existing code in user
> 
> ---
> Links:
> RFC:https://lore.kernel.org/linux-nfs/tencent_E6816C9AF53E61BA5E0A313BBE5E1D19B00A@qq.com/T/#u
> 
> 
> Zhuohao Bai (2):
>    _rpc_dtablesize: Decrease the value of size.
>    _rpc_dtablesize: Cleaning up the existing code
> 
>   src/rpc_dtablesize.c | 2 ++
>   src/svc.c            | 2 --
>   2 files changed, 2 insertions(+), 2 deletions(-)
> 
Both Committed... (tag: libtirpc-1-3-5-rc2)

steved.