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

Add throttling to file system polling and reduce CPU usage on default setting, remove watchman references #83

Merged
merged 3 commits into from
Jan 6, 2024

Conversation

JamesHutchison
Copy link
Owner

@JamesHutchison JamesHutchison commented Jan 6, 2024

Jurigged does not use watchman, it uses watchdog. Watchdog does not use watchman.

I investigated using watchfiles and it didn't provide enough benefits to merit switching. It added a bit of code complexity to conform to the interface that jurigged was expecting and even then it created bug hazards.

The watchfiles branch is here, for reference: https://github.com/JamesHutchison/pytest-hot-reloading/tree/watchfiles

This fixes the references to watchman to now say "OS events", it also adds the capability to throttle the file system polling done by jurigged to reduce idle cpu usage. Lower numbers are faster. The default values now increase the polling interval to 2 seconds instead of 1, and adds a small 2 ms delay before each listdir. Both of these are affected by the throttle, so for example, a value of 0.5 brings the delay back to 1 second and reduces the listdir delay to 1ms.

The default changes reduce the idle CPU usage by approx half. In Heavy Resume this reduced the idle from 10 - 12% to 4 - 6% with the debugger on.

Addresses #80

Add poll throttle
Fix references to watchman
Copy link

github-actions bot commented Jan 6, 2024

Ptyme Track total time logged:
JamesHutchison: 4:34:07 [4:34:07 across all branches]

@JamesHutchison JamesHutchison merged commit 93d134f into main Jan 6, 2024
5 checks passed
@JamesHutchison JamesHutchison deleted the reduce-poll-cpu-usage branch January 6, 2024 00:44
Sign up for free to 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.

1 participant