Skip to content

feat(prof): add I/O profiling for macOS#3648

Open
realFlowControl wants to merge 1 commit intomasterfrom
florian/macos-io-profiling
Open

feat(prof): add I/O profiling for macOS#3648
realFlowControl wants to merge 1 commit intomasterfrom
florian/macos-io-profiling

Conversation

@realFlowControl
Copy link
Member

@realFlowControl realFlowControl commented Feb 13, 2026

Description

This PR:

  • adds I/O profiling to macOS
  • cleans up some datatypes in I/O profiling's mod.rs

Why support macOS I/O profiling?

AFAIK we might have a few customers running the profiler on macOS, but the real value is local testability for I/O profiling in our developer environment which is native macOS.

Reviewer checklist

  • Test coverage seems ok.
  • Appropriate labels assigned.

@github-actions github-actions bot added profiling Relates to the Continuous Profiler tracing labels Feb 13, 2026
@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Feb 13, 2026

⚠️ Tests

Fix all issues with BitsAI or with Cursor

⚠️ Warnings

🧪 1053 Tests failed

❄️ Known flaky: testCommandWithArgument from cakephp-28-test.DDTrace\Tests\Integrations\CLI\CakePHP\V2_8\CommonScenariosTest (Datadog) (Fix with Cursor)
DDTrace\Tests\Integrations\CLI\CakePHP\V2_8\CommonScenariosTest::testCommandWithArgument
TypeError: Argument 1 passed to DDTrace\Tests\Common\SpanChecker::DDTrace\Tests\Common\{closure}() must be of the type array, string given

tests/Common/SpanChecker.php:599
tests/Common/SpanChecker.php:601
tests/Common/SpanChecker.php:346
tests/Common/SpanAssertionTrait.php:19
tests/Common/IntegrationTestCase.php:197
tests/Integrations/CLI/CakePHP/V2_8/CommonScenariosTest.php:51
tests/Common/RetryTraitVersionSpecific70.php:28
...
❄️ Known flaky: testCommandWithNoArguments from cakephp-28-test.DDTrace\Tests\Integrations\CLI\CakePHP\V2_8\CommonScenariosTest (Datadog) (Fix with Cursor)
DDTrace\Tests\Integrations\CLI\CakePHP\V2_8\CommonScenariosTest::testCommandWithNoArguments
TypeError: Argument 1 passed to DDTrace\Tests\Common\SpanChecker::DDTrace\Tests\Common\{closure}() must be of the type array, string given

tests/Common/SpanChecker.php:599
tests/Common/SpanChecker.php:601
tests/Common/SpanChecker.php:346
tests/Common/SpanAssertionTrait.php:19
tests/Common/IntegrationTestCase.php:197
tests/Integrations/CLI/CakePHP/V2_8/CommonScenariosTest.php:35
tests/Common/RetryTraitVersionSpecific70.php:28
...

    ❄️ Known flaky: testCommandWithArgument from cakephp-310-test.DDTrace\Tests\Integrations\CLI\CakePHP\V3_10\CommonScenariosTest (Fix with Cursor)

View all

ℹ️ Info

❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 6bac2fd | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@codecov-commenter
Copy link

codecov-commenter commented Feb 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 62.11%. Comparing base (a9caaa0) to head (6bac2fd).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #3648      +/-   ##
==========================================
- Coverage   62.21%   62.11%   -0.11%     
==========================================
  Files         141      141              
  Lines       13387    13387              
  Branches     1753     1753              
==========================================
- Hits         8329     8315      -14     
- Misses       4260     4273      +13     
- Partials      798      799       +1     

see 3 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link

pr-commenter bot commented Feb 13, 2026

Benchmarks [ profiler ]

Benchmark execution time: 2026-02-18 06:38:51

Comparing candidate commit 6bac2fd in PR branch florian/macos-io-profiling with baseline commit a9caaa0 in branch master.

Found 0 performance improvements and 3 performance regressions! Performance is the same for 26 metrics, 7 unstable metrics.

scenario:walk_stack/1

  • 🟥 wall_time [+505.174ns; +509.288ns] or [+4.050%; +4.083%]

scenario:walk_stack/50

  • 🟥 wall_time [+1.317µs; +1.326µs] or [+8.531%; +8.589%]

scenario:walk_stack/99

  • 🟥 wall_time [+1.321µs; +1.327µs] or [+8.575%; +8.612%]

@realFlowControl realFlowControl force-pushed the florian/macos-io-profiling branch 5 times, most recently from 3368fe5 to a83fd12 Compare February 16, 2026 14:29
@realFlowControl realFlowControl marked this pull request as ready for review February 16, 2026 15:02
@realFlowControl realFlowControl requested a review from a team as a code owner February 16, 2026 15:02
@realFlowControl realFlowControl force-pushed the florian/macos-io-profiling branch from a83fd12 to 2aa2c4b Compare February 18, 2026 06:12
@realFlowControl realFlowControl requested review from a team as code owners February 18, 2026 06:12
@realFlowControl realFlowControl force-pushed the florian/macos-io-profiling branch from 2aa2c4b to e32fa5d Compare February 18, 2026 06:14
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@realFlowControl realFlowControl force-pushed the florian/macos-io-profiling branch from e32fa5d to 6bac2fd Compare February 18, 2026 06:19
Copy link
Collaborator

@morrisonlevi morrisonlevi left a comment

Choose a reason for hiding this comment

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

I have some more reading to do to review the rest of it, but here's some review.

Comment on lines +52 to +54
// The libc crate deprecates Mach-O types in favor of the mach2 crate, but we only use a few
// types and don't want to add a dependency just for that.
#![allow(deprecated)]
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why? Is there some undesirable reason to have a macOS-only dependency on mach2?

Copy link
Member Author

@realFlowControl realFlowControl Feb 18, 2026

Choose a reason for hiding this comment

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

The main reason was to keep the dependency surface minimal and avoid extra target-specific dependency/lockfile "overhead" just for this "local-dev" feature. I wanted to keep things "contained", so that being said: there isn’t a functional blocker to using mach2. If you prefer, I can switch this file to mach2 and drop the #![allow(deprecated)]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

profiling Relates to the Continuous Profiler tracing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments