/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ syntax = "proto2"; import "protos/perfetto/config/trace_config.proto"; package perfetto.protos; // This is the schema for the config files in /test/stress_test/configs/*.cfg. message StressTestConfig { optional TraceConfig trace_config = 1; // Shared Memory Buffer setup, passed as arguments to Tracing.Initialize(). optional uint32 shmem_size_kb = 2; optional uint32 shmem_page_size_kb = 3; // How many producer processes to spawn. optional uint32 num_processes = 4; // How many writer threads each producer process should spawn. optional uint32 num_threads = 5; // The producer will write events until one of the following is met: // - trace_config.duration_ms is reached. // - max_events is reached. optional uint32 max_events = 6; // If > 0 will write nested messages up to N levels deep. The size of each // nested message depends on the payload_mean / sttdev arguments (below). // This is to cover the patching logic. optional uint32 nesting = 7; // This submessage defines the timings of each writer worker thread. message WriterTiming { // The size of the payload written on each iteration. optional double payload_mean = 1; optional double payload_stddev = 2; // The nominal event writing rate, expressed in events/sec. // E.g. if payload_mean = 500 (bytes) and rate_mean = 1000 (Hz), each thread // will write 500 KB / sec approximately (% stalling). optional double rate_mean = 3; optional double rate_stddev = 4; // If non-zero each worker will slow down the writing of the payload: // it writes half payload, sleep for payload_write_time_ms, then write the // other half. optional uint32 payload_write_time_ms = 5; } // The timings used by default. optional WriterTiming steady_state_timings = 8; // Optionally it is possible to cause a writer to enter "burst mode", // simulating peaks of high-intensity writing. The way it works is the // following: by default the writer writes events using the // |steady_state_timings|. Then every |burst_period_ms| it will switch to the // |burst_timings| for |burst_duration_ms|, and go back to the steady state // after that (and then repeat). optional uint32 burst_period_ms = 9; optional uint32 burst_duration_ms = 10; optional WriterTiming burst_timings = 11; }