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

[PH] thread count recommendation tests #510

Merged

Conversation

oschwaldp-oci
Copy link
Contributor

@oschwaldp-oci oschwaldp-oci commented Nov 23, 2022

Develop performance tests to establish thread count recommendations (net, chain, producer)

Add options to calculate recommended producer, chain, and net worker thread pool size.

Each plugin's option determines whether to calculate number of worker threads to use in the thread pool with options of: none, lmax, or full. In none mode, the default, no calculation will be attempted and default configured thread count will be used. In lmax mode, thread count will incrementally be tested until the performance rate ceases to increase with the addition of subsequent threads. In full mode thread count will incrementally be tested from 2..num logical processors, recording each performance and choosing the local max performance (same value as would be discovered in lmax mode). Useful for graphing the full performance impact of each available thread.

New Arguments

  • --calc-producer-threads {none,lmax,full}
    Determines whether to calculate number of worker threads to use in producer thread pool ("none", "lmax", or "full").
    In "none" mode, the default, no calculation will be attempted and default configured --producer-threads value will be used.
    In "lmax" mode, producer threads will incrementally be tested until the performance rate ceases to increase with the addition of additional threads.
    In "full" mode producer threads will incrementally be tested from 2..num logical processors, recording each performance and choosing the local max performance (same value as would be discovered in "lmax" mode). Useful for graphing the full performance impact of each available thread. (default: none)
  • --calc-chain-threads {none,lmax,full}
    Determines whether to calculate number of worker threads to use in chain thread pool ("none", "lmax", or "full").
    In "none" mode, the default, no calculation will be attempted and default configured --chain-threads value will be used.
    In "lmax" mode, producer threads will incrementally be tested until the performance rate ceases to increase with the addition of additional threads.
    In "full" mode producer threads will incrementally be tested from 2..num logical processors, recording each performance and choosing the local max performance (same value as would be discovered in "lmax" mode). Useful for graphing the full performance impact of each available thread. (default: none)
  • --calc-net-threads {none,lmax,full}
    Determines whether to calculate number of worker threads to use in net thread pool ("none", "lmax", or "full").
    In "none" mode, the default, no calculation will be attempted and default configured --net-threads value will be used.
    In "lmax" mode, producer threads will incrementally be tested until the performance rate ceases to increase with the addition of additional threads.
    In "full" mode producer threads will incrementally be tested from 2..num logical processors, recording each performance and choosing the local max performance (same value as would be discovered in "lmax" mode). Useful for graphing the full performance impact of each available thread. (default: none)

Added option to opt out of running the tps test.

  • --skip-tps-test Determines whether to skip the max TPS measurement tests (default: False)

Updated thread configurations based on test recommendations

  • --producer-threads PRODUCER_THREADS
    Number of worker threads in producer thread pool (default: 6)
  • --chain-threads CHAIN_THREADS
    Number of worker threads in controller thread pool (default: 3)

Also renaming to use Ptb abbreviation in light of the name change.
Using PtbConfig and LoggingConfig objects simplifies test initializer params and encapsulates related config items into an object describing their use. It also allows easy reporting of test configuration in test report and will allow reporting to come for free if additional config arguments are added.

Some renaming for efficiency and clarity.
Break out config and logging classes.

Update documentation.
…thread pool size.

Each plugin's option determines whether to calculate number of worker threads to use in the thread pool with options of: 'none', 'lmax', or 'full'. In 'none' mode, the default, no calculation will be attempted and default configured thread count will be used. In 'lmax' mode, thread count will incrementally be tested until the performance rate ceases to increase with the addition of subsequent threads. In 'full' mode thread count will incrementally be tested from 2..num logical processors, recording each performance and choosing the local max performance (same value as would be discovered in 'lmax' mode). Useful for graphing the full performance impact of each available thread.

Added log directory to collect results of thread optimization calculations.

Added option to opt out of running the tps test.

Updated README for new options and to show the updates to the result reports.
@oschwaldp-oci oschwaldp-oci changed the title [PH] thread count tests [PH] thread count recommendation tests Nov 23, 2022
tests/performance_tests/performance_test.py Show resolved Hide resolved
tests/performance_tests/performance_test.py Outdated Show resolved Hide resolved
tests/performance_tests/performance_test.py Outdated Show resolved Hide resolved
@oschwaldp-oci oschwaldp-oci merged commit dc76de1 into feature_performance_harness_stage_2 Nov 30, 2022
@oschwaldp-oci oschwaldp-oci deleted the ph-thread-count-tests branch November 30, 2022 21:11
cmadh pushed a commit to cmadh/leap that referenced this pull request Jan 2, 2023
…ustive_snapshot

[3.2] Add a second account and action to test_exhaustive_snapshot
@oschwaldp-oci oschwaldp-oci self-assigned this Apr 14, 2023
@oschwaldp-oci oschwaldp-oci added the OCI Work exclusive to OCI team label Apr 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OCI Work exclusive to OCI team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants