Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add multi-threaded SB performance tests #2465

Closed
jphickey opened this issue Nov 17, 2023 · 0 comments · Fixed by #2466
Closed

Add multi-threaded SB performance tests #2465

jphickey opened this issue Nov 17, 2023 · 0 comments · Fixed by #2466
Assignees

Comments

@jphickey
Copy link
Contributor

Is your feature request related to a problem? Please describe.
The SB performance tests that were added in #2380 are single threaded. Thus, there is never any contention/blocking on the shared data structures (i.e. the SB shared data mutex is always available), and when receiving there is always a message in the pipe.

This is adequate to gauge the computation done strictly within the SB activity, but does not gauge how well it scales to real mission use, where there is typically a different app doing the sending vs. receiving.

Describe the solution you'd like
Add additional test cases that use multiple threads.

Case 1: Two threads, Thread 1 doing a CMD send and CMD receive, and Thread 2 doing a TLM send and TLM receive.

This will mean both threads are competing to access the SB shared data structures and thus depends on the mutex working properly, and performance will degrade if there is too much work being serialized by the mutex. However, it is still not entirely flight-like because the same thread is still doing send + receive. But, it avoids synchronization/throttling issues and there is no chance of msglim overrun.

Case 2: Four threads Thread 1 doing CMD send, thread 2 doing TLM send, thread 3 doing CMD recv, and thread 4 doing TLM recv.

This is the most realistic in that it matches how CFS apps typically work. However, it also makes it difficult to run at full speed because of the lack of synchronization in SB. Therefore, this needs to be externally synced, which will reduce performance.

Additional context
With recently expressed concerns about SB performance, we need better benchmarks.

Requester Info
Joseph Hickey, Vantage Systems, Inc.

@jphickey jphickey self-assigned this Nov 17, 2023
jphickey added a commit to jphickey/cFE that referenced this issue Nov 17, 2023
Add multi-thread variants of the SB bulk transfer tests.  The intent
is to create some contention on the SB shared data mutex between the
threads.  This more closely resembles real use cases where different
threads are doing sending and receving simultaneously.
jphickey added a commit to jphickey/cFE that referenced this issue Nov 17, 2023
Add multi-thread variants of the SB bulk transfer tests.  The intent
is to create some contention on the SB shared data mutex between the
threads.  This more closely resembles real use cases where different
threads are doing sending and receving simultaneously.
jphickey added a commit to jphickey/cFE that referenced this issue Nov 17, 2023
Add multi-thread variants of the SB bulk transfer tests.  The intent
is to create some contention on the SB shared data mutex between the
threads.  This more closely resembles real use cases where different
threads are doing sending and receving simultaneously.
dzbaker added a commit that referenced this issue Dec 5, 2023
dzbaker added a commit that referenced this issue Dec 5, 2023
@dzbaker dzbaker closed this as completed in c83a193 Dec 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant