Comments (4)
A custom thread pool with a non-trivial 'affinity' policy? Would require pushing a lot of information down into the control layer though...
To some degree this is probably something the application should take care of and only register light-weight "move it from your queue to mine" operations directly on the PVs. We could ex, give each top-level ophyd object it's own thread (or group them somehow) so sleeps won't mess with other devices?
from caproto.
That seems right. I liked the idea of "I'll just put in a lock inside my callback," until we realized that order wasn't guaranteed even so. "Move it from your queue to mine," is a better version of that. Group by Devices to keep their components from getting too far out of sync is sensible.
from caproto.
New thought on this: a server only guarantees time ordering per circuit, so it is safe to move from one worker thread per context to one worker thread per circuit.
I think we should extend the same approach we have now: give users one thread pool per circuit but put one worker in the pool by default. Leave it up to them whether to turn up the number of workers to get more concurrency in some use case where it is OK to start one job before the previous job has completed.
from caproto.
The idea in my previous comment was implemented some time ago in #320. I think this is the best we can do without adding a bunch of complexity ("a non-trivial affinity policy"). I'm going to close -- feel free to reopen if you thing it's worth going further here.
from caproto.
Related Issues (20)
- autosave: add option for permissions on autosave JSON files
- Support raw timestamps in ChannelData (no float conversion for beam pulse ID/fiducials, etc)
- Remove pvAccess support
- Sync client: interference from non-PVs on the network HOT 1
- Decorating method with pvproperty fails if the method provides docstring HOT 4
- Document meaning of "High load. Batched 2 commands" and warn only if above a threshold HOT 2
- Writing a motor controller IOC... any tips/guidelines? HOT 6
- caproto without wifi\ethernet HOT 1
- BUG: Using lower-level PVSpec with kwarg `read_only=True` results in a PV that is not read only. HOT 1
- Run multiple, soft and caproto, IOCs on same host HOT 4
- Looking for maintainers / developers HOT 13
- Error [WinError 10054] HOT 12
- Subscription backlog memory usage too high for PVs storing large arrays HOT 2
- Writing a C++ CA client that communicates with caproto-based server HOT 2
- High load. Dropped 4 responses. HOT 13
- Threading client sometimes fails to reconnect a disconnected PV
- Python 3.10: asyncio `loop` parameter was removed HOT 3
- Review performance testing HOT 3
- Duplication of PV writes seen by camonitor HOT 6
- Strict typing and Caproto HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from caproto.