RPC Performance Optimization Take 3 #106
No reviewers
Labels
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#106
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "pca006132/artiq-zynq:runtime"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
First, we use Arc to store the RPC buffer in core1, so core0 won't have to copy it once more before sending it. This give ~10% performance improvement for large RPC, for example the async throughput improved from ~52MiB/s to ~57MiB/s. This requires modifying the zynq-rs RAM module to check pointer range instead of CPU id for deallocation.
Second, we poll for some amount of time (100 trials) without context switch (await) for RPC return buffer allocation. This is an attempt to improve the performance problem stated in https://github.com/m-labs/artiq/issues/1324.
With the modified test script:
The time taken for the
make_data
call drops from 0.023068s to 0.009652. >50% performance improvement in this case.test_performance
result over 100 samples:Async throughput: 56.88MiB/s
Pull request closed