Skip to content

[BEAM-11791] Adding a microbenchmark for TestStream - #14046

Merged
pabloem merged 3 commits into
apache:masterfrom
pabloem:teststream-ubench
Feb 24, 2021
Merged

[BEAM-11791] Adding a microbenchmark for TestStream#14046
pabloem merged 3 commits into
apache:masterfrom
pabloem:teststream-ubench

Conversation

@pabloem

Copy link
Copy Markdown
Member

Adding a microbenchmark for running a simple pipeline with TestStream and a few groupings in parallel.

r: @rohdesamuel


Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

  • Choose reviewer(s) and mention them in a comment (R: @username).
  • Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
  • Update CHANGES.md with noteworthy changes.
  • If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

Post-Commit Tests Status (on master branch)

LangSDKDataflowFlinkSamzaSparkTwister2
GoBuild Status---Build Status---Build Status---
JavaBuild StatusBuild Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build StatusBuild Status
Build Status
Build Status
Build Status
PythonBuild Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
---Build Status---
XLangBuild StatusBuild StatusBuild Status---Build Status---

Pre-Commit Tests Status (on master branch)

---JavaPythonGoWebsiteWhitespaceTypescript
Non-portableBuild StatusBuild Status
Build Status
Build Status
Build Status
Build StatusBuild StatusBuild StatusBuild Status
Portable---Build Status------------

See .test-infra/jenkins/README for trigger phrase, status and link of all Jenkins jobs.

GitHub Actions Tests Status (on master branch)

Build python source distribution and wheels
Python tests
Java tests

See CI.md for more information about GitHub Actions CI.

@pabloem

Copy link
Copy Markdown
MemberAuthor

Run Python Load Tests FnApiRunner Microbenchmark

@codecov

codecovBot commented Feb 23, 2021

Copy link
Copy Markdown

Codecov Report

Merging #14046 (5f8a15f) into master (aaad864) will decrease coverage by 0.00%.
The diff coverage is n/a.

Impacted file tree graph

@@ Coverage Diff @@## master #14046 +/- ##
==========================================
- Coverage 82.98% 82.97% -0.01% 
==========================================
Files 469 469 Lines 58298 58300 +2 ==========================================
- Hits 48379 48375 -4 - Misses 9919 9925 +6 
Impacted FilesCoverage Δ
...amples/snippets/transforms/elementwise/__init__.py
sdks/python/apache_beam/examples/snippets/util.py
sdks/python/apache_beam/io/filebasedsource.py
...am/portability/api/standard_window_fns_pb2_urns.py
...beam/testing/load_tests/load_test_metrics_utils.py
...he_beam/portability/api/external_transforms_pb2.py
sdks/python/apache_beam/coders/typecoders.py
sdks/python/apache_beam/examples/sql_taxi.py
...ks/python/apache_beam/runners/worker/statecache.py
..._beam/testing/benchmarks/nexmark/queries/query0.py
... and 928 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update aaad864...5f8a15f. Read the comment docs.

@pabloem

Copy link
Copy Markdown
MemberAuthor

@pabloem

Copy link
Copy Markdown
MemberAuthor

Run Python PreCommit

def run_benchmark(
starting_point=1, num_runs=10, num_elements_step=300, verbose=True):
suite = [
utils.LinearRegressionBenchmarkConfig(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm confused, why is this running a linear regression? Shouldn't it just be a windowed average over the last N runs?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This runs a pipeline with 1 element, then 300, then 600, and so on until 3000. We use the linear regression to measure per-element overhead, and base overhead of the runner, and report it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still feels very weird to me to be using a regression. Usually those are meant to build models/feature extraction, but this seems the benchmark only needs to report some windowed average. Anyway, that's a conversation for another time.

3) When the timer fires, change the key and output all the elements downstream

This executes the same codepaths that are run on the Fn API (and Dataflow)
workers, but is generally easier to run (locally) and more stable..

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove extraneous period

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

Comment on lines +26 to +28
1) Put all the PCollection elements in state
2) Set a timer for the future
3) When the timer fires, change the key and output all the elements downstream

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is somewhat misleading. Technically, windows are state & timers but I don't know if many people will make that connection reading this code. Can you please rewrite what this microbenchmark does in terms of windowing?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Great catch. I've rephrased this. LMK if htat looks better.

@rohdesamuelrohdesamuel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@pabloem
pabloem merged commit f355631 into apache:masterFeb 24, 2021
@pabloem
pabloem deleted the teststream-ubench branch February 24, 2021 20:07
@pabloem

Copy link
Copy Markdown
MemberAuthor

thanks Sam!

kennknowles added a commit to kennknowles/beam that referenced this pull request Mar 4, 2021
…gger
* github/master: (123 commits)
[BEAM-11899] Bump commons-pool to 2.8.1 and bump commons-dbcp to 2.8.0, Because there is a library dependency
Update pillars.yaml (apache#14142)
[BEAM-10632] Checkerframework nullness cleanups (apache#14107)
[BEAM-11213] Instantiate SparkListenerApplicationStart in a Spark 3 compatible way
Fix typos for excluding testMergingCustomWindowsWithoutCustomWindowTypes
Specify the time resolution for TestStreamPayload.
[BEAM-10961] Enable strict depdency checking for sdks/java/extensions/euphoria (second attempt)
[BEAM-11848] Store Docker images in a variable for consistency.
Splitting old Go Precommit and new ULR integration test precommit.
Moving runner imports out of ptest.
Add the TO_STRING capability to Java and Python
[BEAM-11848] Fix Docker images list.
jdbc python supported Dataflow runner (apache#13960)
Adding a warning to use multi-workers on FnApiRunner
Fix legend for Python Directrunner microbenchmarks
[BEAM-11740] Estimate PCollection byte size
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/zetasketch (apache#14093)
Map Dataflow JOB_STATE_CANCELLING to Beam RUNNING state
[BEAM-11833] Fix reported watermark after restriction split in UnboundedSourceAsSDFRestrictionTracker
[BEAM-10761] add reference to BEAM-11761
[BEAM-10961] enable strict dependency checking for flink/job-server
Exclude MapState example integration tests from Dataflow runner v2 suite
Remove InvalidWindows from Java SDK, instead track "already merged" bit
Fix checkstyle in watermark latency benchmark
Fix compile breakage in WindmillStateInternals
Improve test, error on ALREADY_MERGED.
[BEAM-10961] Strict dependency checking for sdks/java/io/gcp (apache#13791)
Initial watermark latency benchmark
Attempting improvements on DirectRunner Python dash
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/google-cloud-platform-core (apache#14084)
Merge pull request apache#13802: [BEAM-1474]. Adding MapState and SetState support for the Dataflow runner
Remove some false positives
Remove nullness warning suppression
[BEAM-11861] Add methods to explicitly provide coder for ParquetIO's Parse and ParseFiles (apache#14078)
[BEAM-11531] Use pandas 1.2 for python>=3.7 (apache#14099)
[BEAM-10961] add reference to BEAM-11761
[BEAM-10961] add explicit compile for auto_value_annotations in sdks/extensions/ml/build.gradle
Attempting improvements on DirectRunner Python dash
Recognize JOB_STATE_PENDING from Dataflow and map to RUNNING
never run checkerframework on tests
Puts more expensive BQ empty table check to the right of the 'and' condition (apache#14094)
Use the windowing strategy of the input, not output, PCollection of GBK.
Do not stage dataflow worker jar when use runner_v2.
[BEAM-11870] Re-raise underlying exception for InvocationTargetException (apache#14098)
[BEAM-11778] Create a wrapper for ZetaSQL catalog and refactor accordingly. (apache#13934)
[BEAM-9378] Add ignored tests which fail in various ways when querying nested structures (apache#14077)
Merge Fn API and runner v2 configurations for DataflowRunner
Fix up! formatting
Add validate runner test for testing custom merging windows fn without custom window types
Revert "Revert "[BEAM-2914] Add portable merging window support to Python. (apache#12995)""
[BEAM-10961] fix stray reordering of lines
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/sorter
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/sketching
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/schemaio-expansion-service
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/protobuf
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/ml
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/kyro
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/join-library
[BEAM-10961] undo line moves (originally intended for alphabeticization)
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/jackson
[BEAM-10961] Enable strict dependency checking on sdks/java/extensions/sql (apache#13830)
[BEAM-10961] enable strict dependency checking for sdks/java/extensions/euphoria
[BEAM-10961] enable strict dependency checking for sdks/java/io/parquet (apache#14062)
[BEAM-10961] enable strict dependency checking for sdks/java/io/thrift (apache#14066)
Refactor ZetaSqlDialectSpecTest and add some passing tests. (apache#14080)
[BEAM-11864] Use objects.equals instead of raw comparison
[BEAM-11707] Change WindmillStateCache cache invalidation to be based upon reference invalidation instead of expensive set management. Reduce operations of shared cache by caching per-key object sets locally and flushing as groups to shared cache. Remove byte tracking which could be racy based upon background evictions in favor of just iterating for rendering the status page. This also lets us capture more stats.
[BEAM-11730] Reduce context switching overhead for appliance reads by issuing reads directly from calling threads in the case that there is no reads being queued.
Fix preview
Show string from Dataflow service when job terminates in unrecognized state
Log a warning when Dataflow returns an unrecognized state
Merge pull request apache#14033 from [BEAM-11408] Integrate Python BigQuery sink with GroupIntoBatches
Remove SYNCHRONIZED_PROCESSING_TIME from model proto
Remove use of model SYNCHRONIZED_PROCESSING_TIME
Merge redundant model feature columns in capability matrix
Remove MapReduce runner from capability matrix, because it is on a branch and unreleased
Remove JStorm runner from capability matrix, because it is on a branch and unreleased
Remove retractions from capability matrix, because they do not exist yet
Remove metadata-driven triggers from capability matrix, because they do not exist
[BEAM-10937] Add Tour of Beam page (apache#13747)
[BEAM-11344] Apply "Become a Committer" changes from Website Revamp (apache#14036)
Merge pull request apache#14046 from [BEAM-11791] Adding a microbenchmark for TestStream
Returning successful writes in FhirIO.Write.Result (apache#14034)
Fixup
[BEAM-10961] enable strict dependency checking for sdks/java/io/file-based-io-tests (apache#14052)
[BEAM-10961] enable strict dependency checking for sdks/java/io/contextualtextio (apache#14049)
[BEAM-10961] enable strict dependency checking for sdks/java/io/kinesis (apache#14058)
[BEAM-10961] enable strict dependency checking for sdks/java/io/bigquery-io-perf-tests (apache#14048)
[BEAM-10961] enable strict dependency checking for sdks/java/io/elasticsearch (apache#14050)
[BEAM-10961] enable strict dependency checking for sdks/java/io/expansion-service (apache#14051)
[BEAM-10961] enable strict dependency checking for sdks/java/io/jdbc (apache#14055)
[BEAM-10961] enable strict dependency checking for sdks/java/io/jms (apache#14056)
[BEAM-10961] enable strict dependency checking for sdks/java/io/kafka (apache#14057)
[BEAM-10961] enable strict dependency checking for sdks/java/io/hcatalog (apache#14053)
[BEAM-11859] Fixed bug in python S3 IO
[BEAM-10114] Fix PerSubscriptionPartitionSdf to not rely on the presence of BundleFinalizer
[BEAM-10114] Fix PerSubscriptionPartitionSdf to not rely on the presence of BundleFinalizer
[BEAM-10961] fix spacing
[BEAM-10961] enable strict dependency checking for sdks/java/io/xml
[BEAM-10961] enable strict dependency checking for sdks/java/io/tika
...
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@pabloem@rohdesamuel