1. 06 Aug, 2020 1 commit
    • Clemens Backes's avatar
      [platform] Use more tasks for jobs · 044ddd31
      Clemens Backes authored
      Wasm recently switched from spawning a number of background tasks for
      compilation to just using a single job (via the pretty new
      {Platform::PostJob} API). This caused major regressions in several
      benchmarks running in d8, because the {DefaultPlatform} is only using
      half of the available worker threads for executing jobs with "user
      visible" priority.
      
      This CL changes this to use all available worker threads for "user
      blocking" or "user visible" jobs, and two threads for "best effort"
      jobs. The limit of two threads for best effort is identical to what
      chromium does with best effort *tasks*. For user blocking and user
      visible, chromium does not impose any limit, so we also remove the
      limitation to half of the threads from d8.
      
      Drive-by: Use {NewDefaultJobHandle} for constructing {DefaultJobHandle}.
      
      R=mlippautz@chromium.org
      CC=ahaas@chromium.org, gab@chromium.org, etiennep@chromium.org
      
      Bug: chromium:1113234, chromium:1101340
      Change-Id: I9280e649a1cf3832c562ff7251e8bda0103af111
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339481Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Commit-Queue: Hannes Payer <hpayer@chromium.org>
      Auto-Submit: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69265}
      044ddd31
  2. 20 Jul, 2020 1 commit
  3. 25 Jun, 2020 1 commit
  4. 06 May, 2020 1 commit
    • Clemens Backes's avatar
      [platform] Bump maximum number of worker threads · a0059e71
      Clemens Backes authored
      The number of worker threads in the default platform is currently capped
      at 8. At runtime, it's also capped by the number of actual cores
      available.
      Since d8 is often used for benchmarking (both internally and
      externally), this CL slightly increases the maximum to 16. At least wasm
      compilation is known to scale beyond 8 threads. If this increase does
      not cause any problems on bots, we might increase further in the future.
      
      R=mlippautz@chromium.org
      
      Change-Id: I04e138c51d7dc26c38b9384c8ea67a883c976050
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2182454
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67586}
      a0059e71
  5. 05 May, 2020 1 commit
  6. 24 Apr, 2020 1 commit
  7. 17 Apr, 2020 1 commit
  8. 06 Apr, 2020 1 commit
  9. 24 Jan, 2020 1 commit
  10. 08 Jan, 2020 1 commit
  11. 19 Mar, 2019 1 commit
    • Peter Marshall's avatar
      [platform] Implement delayed tasks in the default worker runner · da66158f
      Peter Marshall authored
      This was unimplemented but is needed for Perfetto which posts delayed
      tasks on worker threads e.g. drain the trace buffer into a file every x
      seconds.
      
      This is implemented by adding a second queue which holds the delayed
      tasks in chronological order of 'next-to-execute'. We use an
      std::multimap for the queue so that we can easily get the next delayed
      task with begin().
      
      The implementation will move delayed tasks into the main task queue
      when their deadline expires.
      
      Drive-by cleanup of the runner destructor which can just use = default.
      
      Bug: v8:8339
      
      Change-Id: I3629c5d6e15ced2fc47eb1b7519a2dbbf8461fce
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1521114
      Commit-Queue: Peter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#60320}
      da66158f
  12. 11 Feb, 2019 1 commit
  13. 12 Oct, 2018 1 commit
  14. 28 Sep, 2018 1 commit
  15. 20 Jul, 2018 1 commit
  16. 30 Apr, 2018 2 commits
  17. 26 Mar, 2018 1 commit
  18. 20 Mar, 2018 1 commit
    • Clemens Hammacher's avatar
      [platform] Use condition variable instead of semaphore · 78f88ef0
      Clemens Hammacher authored
      The MessageLoopBehavior might change over time: Sometimes we want to
      wait because wasm background compilation is going on, sometimes we
      don't. This makes the semaphore go out of sync with the task queue (we
      always notify it when a new task is scheduled, but we only sometimes
      wait on it).
      Using a condition variable instead of a semaphore avoids this problem.
      
      R=ahaas@chromium.org
      
      Change-Id: Ib9850efc634f5988d3f824895b6566bd76475985
      Reviewed-on: https://chromium-review.googlesource.com/969122Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52057}
      78f88ef0
  19. 01 Mar, 2018 2 commits
  20. 21 Dec, 2017 1 commit
  21. 15 Nov, 2017 1 commit
    • Andreas Haas's avatar
      Reland "[platform] Implement TaskRunners in the DefaultPlatform" · 8a1bafaf
      Andreas Haas authored
      There was a data race in the access of the foreground_task_runner_map_.
      I protect each access to foreground_task_runner_map_ with a lock now.
      
      Original change's description:
      > [platform] Implement TaskRunners in the DefaultPlatform
      >
      > This CL implements the TaskRunners in the DefaultPlatform which has been
      > added recently to the platform API. In addition I changed how task
      > posting works on the DefaultPlatform.
      >
      > With this implementation the DefaultPlatform keeps one
      > DefaultForegroundTaskRunner per isolate, plus one
      > DefaultBackgroundTaskRunner. The DefaultPlatform owns these TaskRunners
      > with a shared_ptr, which is also shared with any caller of
      > GetForegroundTaskRunner or GetBackgroundTaskrunner.
      >
      > This CL moves the task management from the DefaultPlatform to the
      > TaskRunners.  The DefaultForegroundTaskRunner owns and manages the the
      > task queue, the delayed task  queue, and the idle task queue. The
      > DefaultBackgroundTaskRunner owns the WorkerThread pool and the
      > background task queue.
      >
      > In addition changed many Task* to std::unique_ptr<Task> to document task
      > ownership.
      >
      > R=rmcilroy@chromium.org
      >
      > Change-Id: Ib9a01f1f45e5b48844a37d801f884210ec3f6c27
      > Reviewed-on: https://chromium-review.googlesource.com/753583
      > Commit-Queue: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49354}
      
      Change-Id: Iddccdb07bde1a799815ec6ed6af37082df4987c7
      Reviewed-on: https://chromium-review.googlesource.com/770970
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49379}
      8a1bafaf
  22. 14 Nov, 2017 3 commits
    • Michael Achenbach's avatar
      Revert "[platform] Implement TaskRunners in the DefaultPlatform" · c56cff23
      Michael Achenbach authored
      This reverts commit 8de2e6db.
      
      Reason for revert: Suspect for:
      https://build.chromium.org/p/client.v8/builders/V8%20Win32%20-%20nosnap%20-%20shared/builds/24237
      https://build.chromium.org/p/client.v8/builders/V8%20Win64/builds/20896
      
      Original change's description:
      > [platform] Implement TaskRunners in the DefaultPlatform
      > 
      > This CL implements the TaskRunners in the DefaultPlatform which has been
      > added recently to the platform API. In addition I changed how task
      > posting works on the DefaultPlatform.
      > 
      > With this implementation the DefaultPlatform keeps one
      > DefaultForegroundTaskRunner per isolate, plus one
      > DefaultBackgroundTaskRunner. The DefaultPlatform owns these TaskRunners
      > with a shared_ptr, which is also shared with any caller of
      > GetForegroundTaskRunner or GetBackgroundTaskrunner.
      > 
      > This CL moves the task management from the DefaultPlatform to the
      > TaskRunners.  The DefaultForegroundTaskRunner owns and manages the the
      > task queue, the delayed task  queue, and the idle task queue. The
      > DefaultBackgroundTaskRunner owns the WorkerThread pool and the
      > background task queue.
      > 
      > In addition changed many Task* to std::unique_ptr<Task> to document task
      > ownership.
      > 
      > R=​rmcilroy@chromium.org
      > 
      > Change-Id: Ib9a01f1f45e5b48844a37d801f884210ec3f6c27
      > Reviewed-on: https://chromium-review.googlesource.com/753583
      > Commit-Queue: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49354}
      
      TBR=rmcilroy@chromium.org,ahaas@chromium.org
      
      Change-Id: I6c381915a2cae8ea1a0d21d6cfa6e797ccd2d947
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/768748Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49357}
      c56cff23
    • Andreas Haas's avatar
      [platform] Implement TaskRunners in the DefaultPlatform · 8de2e6db
      Andreas Haas authored
      This CL implements the TaskRunners in the DefaultPlatform which has been
      added recently to the platform API. In addition I changed how task
      posting works on the DefaultPlatform.
      
      With this implementation the DefaultPlatform keeps one
      DefaultForegroundTaskRunner per isolate, plus one
      DefaultBackgroundTaskRunner. The DefaultPlatform owns these TaskRunners
      with a shared_ptr, which is also shared with any caller of
      GetForegroundTaskRunner or GetBackgroundTaskrunner.
      
      This CL moves the task management from the DefaultPlatform to the
      TaskRunners.  The DefaultForegroundTaskRunner owns and manages the the
      task queue, the delayed task  queue, and the idle task queue. The
      DefaultBackgroundTaskRunner owns the WorkerThread pool and the
      background task queue.
      
      In addition changed many Task* to std::unique_ptr<Task> to document task
      ownership.
      
      R=rmcilroy@chromium.org
      
      Change-Id: Ib9a01f1f45e5b48844a37d801f884210ec3f6c27
      Reviewed-on: https://chromium-review.googlesource.com/753583
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49354}
      8de2e6db
    • Andreas Haas's avatar
      [cleanup] use unique_ptr for the DefaultPlatform · ffee558e
      Andreas Haas authored
      With this CL, {CreateDefaultPlatform} returns a unique_ptr to indicate
      that the caller owns the returned memory. We had several memory leaks
      where the memory of the DefaultPlatform did not get deallocated.
      
      In addition, the {TracingController} of the {DefaultPlatform} also gets
      received as a unique_ptr. Thereby we document that the {DefaultPlatform}
      takes ownership of the {TracingController}. Note that the memory of the
      {TracingController} was already owned by the {DefaultPlatform}, but it
      was not documented in the interface, and it was used incorrectly in
      tests.
      
      This CL fixes the asan issues in 
      https://chromium-review.googlesource.com/c/v8/v8/+/753583	
      ([platform] Implement TaskRunners in the DefaultPlatform)
      
      R=rmcilroy@chromium.org
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I0d1a6d3b22bb8289dc050b1977e4f58381cec675
      Reviewed-on: https://chromium-review.googlesource.com/755033Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49349}
      ffee558e
  23. 18 Oct, 2017 1 commit
  24. 13 Oct, 2017 1 commit
  25. 30 Aug, 2017 1 commit
  26. 03 Jul, 2017 1 commit
    • Jochen Eisinger's avatar
      Reland "Switch tracing to use v8::TracingController" · cc59f8b1
      Jochen Eisinger authored
      Original change's description:
      > Switch tracing to use v8::TracingController
      >
      > BUG=v8:6511
      > R=fmeawad@chromium.org
      >
      > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I4961e4b61a9ddc98385ed97c3ffcbcaef2d9cba7
      > Reviewed-on: https://chromium-review.googlesource.com/543144
      > Commit-Queue: Jochen Eisinger <jochen@chromium.org>
      > Reviewed-by: Fadi Meawad <fmeawad@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#46307}
      
      BUG=v8:6511
      TBR=fmeawad@chromium.org
      
      Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng;master.tryserver.v8:v8_linux64_tsan_rel
      Change-Id: Ide32b409248dfd466e7c0bae1d8ae61d6a955d98
      Reviewed-on: https://chromium-review.googlesource.com/558865
      Commit-Queue: Jochen Eisinger <jochen@chromium.org>
      Reviewed-by: 's avatarJochen Eisinger <jochen@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46381}
      cc59f8b1
  27. 29 Jun, 2017 2 commits
  28. 26 Jun, 2017 1 commit
  29. 22 Jun, 2017 1 commit
  30. 26 May, 2017 1 commit
  31. 10 May, 2017 3 commits
  32. 09 May, 2017 1 commit
    • Michael Achenbach's avatar
      Revert "Revert "Revert "Introducing an event loop mechanism for d8.""" · 02595c60
      Michael Achenbach authored
      This reverts commit 7dcc8eff.
      
      Reason for revert: Some flakes still (see comments) and breaks predictable testing:
      https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20predictable/builds/11452
      
      Original change's description:
      > Revert "Revert "Introducing an event loop mechanism for d8.""
      > 
      > This reverts commit f7c25da6.
      > 
      > Reason for revert: Fixed
      > 
      > Original change's description:
      > > Revert "Introducing an event loop mechanism for d8."
      > > 
      > > This reverts commit de964dbe.
      > > 
      > > Reason for revert:
      > > https://build.chromium.org/p/client.v8/builders/V8%20Linux/builds/17958
      > > 
      > > Original change's description:
      > > > Introducing an event loop mechanism for d8.
      > > > 
      > > > This mechanism ensures APIs like wasm async complete their work, 
      > > > without requiring use of natives (%APIs).
      > > > 
      > > > The mechanism is similar to the one used in content_shell,
      > > > which should allow us to easily port tests in that environment.
      > > > 
      > > > Review-Url: https://codereview.chromium.org/2842843005
      > > > Cr-Original-Commit-Position: refs/heads/master@{#44908}
      > > > Bug: 
      > > > Change-Id: I9deee0d256a600c60b42902fc8ef8478e5546344
      > > > Reviewed-on: https://chromium-review.googlesource.com/494968
      > > > Commit-Queue: Mircea Trofin <mtrofin@google.com>
      > > > Reviewed-by: Jochen Eisinger <jochen@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#45165}
      > > 
      > > TBR=bradnelson@chromium.org,mtrofin@chromium.org,mtrofin@google.com,jochen@chromium.org
      > > NOPRESUBMIT=true
      > > NOTREECHECKS=true
      > > NOTRY=true
      > > 
      > > Change-Id: Iafec2615d705d1990c57229cab3a988c00b5e12f
      > > Reviewed-on: https://chromium-review.googlesource.com/498630
      > > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > > Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#45166}
      > 
      > TBR=bradnelson@chromium.org,machenbach@chromium.org,mtrofin@chromium.org,mtrofin@google.com,jochen@chromium.org,v8-reviews@googlegroups.com
      > NOPRESUBMIT=true
      > NOTREECHECKS=true
      > NOTRY=true
      > 
      > Change-Id: Ic3c782e918326e291a6cb9bb349c609e9a340b09
      > Reviewed-on: https://chromium-review.googlesource.com/498430
      > Reviewed-by: Mircea Trofin <mtrofin@chromium.org>
      > Commit-Queue: Mircea Trofin <mtrofin@google.com>
      > Cr-Commit-Position: refs/heads/master@{#45172}
      
      TBR=bradnelson@chromium.org,machenbach@chromium.org,mtrofin@chromium.org,mtrofin@google.com,jochen@chromium.org,v8-reviews@googlegroups.com
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Change-Id: I21ffba7141db0bfb4a3275b6e1bf4fb399800ed2
      Reviewed-on: https://chromium-review.googlesource.com/500128Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#45177}
      02595c60
  33. 08 May, 2017 1 commit
    • Mircea Trofin's avatar
      Revert "Revert "Introducing an event loop mechanism for d8."" · 7dcc8eff
      Mircea Trofin authored
      This reverts commit f7c25da6.
      
      Reason for revert: Fixed
      
      Original change's description:
      > Revert "Introducing an event loop mechanism for d8."
      > 
      > This reverts commit de964dbe.
      > 
      > Reason for revert:
      > https://build.chromium.org/p/client.v8/builders/V8%20Linux/builds/17958
      > 
      > Original change's description:
      > > Introducing an event loop mechanism for d8.
      > > 
      > > This mechanism ensures APIs like wasm async complete their work, 
      > > without requiring use of natives (%APIs).
      > > 
      > > The mechanism is similar to the one used in content_shell,
      > > which should allow us to easily port tests in that environment.
      > > 
      > > Review-Url: https://codereview.chromium.org/2842843005
      > > Cr-Original-Commit-Position: refs/heads/master@{#44908}
      > > Bug: 
      > > Change-Id: I9deee0d256a600c60b42902fc8ef8478e5546344
      > > Reviewed-on: https://chromium-review.googlesource.com/494968
      > > Commit-Queue: Mircea Trofin <mtrofin@google.com>
      > > Reviewed-by: Jochen Eisinger <jochen@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#45165}
      > 
      > TBR=bradnelson@chromium.org,mtrofin@chromium.org,mtrofin@google.com,jochen@chromium.org
      > NOPRESUBMIT=true
      > NOTREECHECKS=true
      > NOTRY=true
      > 
      > Change-Id: Iafec2615d705d1990c57229cab3a988c00b5e12f
      > Reviewed-on: https://chromium-review.googlesource.com/498630
      > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
      > Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#45166}
      
      TBR=bradnelson@chromium.org,machenbach@chromium.org,mtrofin@chromium.org,mtrofin@google.com,jochen@chromium.org,v8-reviews@googlegroups.com
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Change-Id: Ic3c782e918326e291a6cb9bb349c609e9a340b09
      Reviewed-on: https://chromium-review.googlesource.com/498430Reviewed-by: 's avatarMircea Trofin <mtrofin@chromium.org>
      Commit-Queue: Mircea Trofin <mtrofin@google.com>
      Cr-Commit-Position: refs/heads/master@{#45172}
      7dcc8eff