[LU-9660] reduce ptlrpcd wakeups on idle system Created: 13/Jun/17  Updated: 19/Dec/17  Resolved: 16/Oct/17

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: Lustre 2.11.0, Lustre 2.10.3

Type: Bug Priority: Minor
Reporter: Andreas Dilger Assignee: Alex Zhuravlev
Resolution: Fixed Votes: 0
Labels: medium

Issue Links:
Related
is related to LU-7236 connections on demand Resolved
is related to LU-9441 Use kernel threads in predictable fas... Resolved
Severity: 3
Rank (Obsolete): 9223372036854775807

 Description   

When a client is not actively using Lustre, there is still background activity (dirty page flushing, lock cancellation, pings, etc.) that wakes a number of different threads. This background activity can cause small delays in user-space threads, and in tightly-coupled HPC applications running across a large number of clients (typically MPI with barriers) this jitter causes all of the clients to be delayed all of the time.

It would be beneficial to determine which threads are commonly being woken when there is no work to be done (in particular ptlrpcd) and:

  • avoid waking them on a periodic basis (e.g. 1s) and instead only wake them when there is work to be done (e.g. send ping, cancel a lock, etc)
  • coordinate wakeups across clients (e.g. on even multiples of 1s, 5s, etc) so that the delays are affecting all clients at one time rather than spread continuously across the application timesteps. This can potentially be problematic, if it causes large load spikes on the servers (essentially DDOS).
  • pre-emptively perform work that would happen in the near future (e.g. cancel locks that will expire in the next few seconds, send an earlier ping, etc).
  • completely disconnect from the server(s) if there is no activity (LU-7236) to avoid pings completely and reduce the number of clients they need to recover when the system is idle.


 Comments   
Comment by Andreas Dilger [ 14/Jun/17 ]

If a single application was batching up operations for the servers in a coordinated manner between clients, this should be staggered to avoid contention between jobs. Something like ping on time % (hash(jobid) & 15) or similar could be used to coordinate autonomously between clients running the same job.

Comment by Alex Zhuravlev [ 31/Aug/17 ]

https://review.whamcloud.com/28776

Comment by Gerrit Updater [ 16/Oct/17 ]

Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/28776/
Subject: LU-9660 ptlrpc: do not wakeup every second
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: e81847bd06519dd9847c31244abe6da978bcd016

Comment by Peter Jones [ 16/Oct/17 ]

Landed for 2.11

Comment by Gerrit Updater [ 07/Nov/17 ]

Minh Diep (minh.diep@intel.com) uploaded a new patch: https://review.whamcloud.com/29969
Subject: LU-9660 ptlrpc: do not wakeup every second
Project: fs/lustre-release
Branch: b2_10
Current Patch Set: 1
Commit: 2142990299805080eab5a17ad7a80486072487f0

Comment by Gerrit Updater [ 19/Dec/17 ]

John L. Hammond (john.hammond@intel.com) merged in patch https://review.whamcloud.com/29969/
Subject: LU-9660 ptlrpc: do not wakeup every second
Project: fs/lustre-release
Branch: b2_10
Current Patch Set:
Commit: 7faa2fec32b9d8a8f9dd646ca0b418c754cd8d0a

Generated at Sat Feb 10 02:28:07 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.