Open solotim opened 6 years ago
If I create a wrapper on rp like below, I see the rp.bin(the binary rp executable) execute on remote machine, but it hangs. How should I debug it?
qrsh -now no -cwd -j y -V rp.bin $*
There are primarily two problems.
rp writes to a local data directory (including acquiring a file lock). By default ~/.cache/rtags
You could possibly make this work by NFS or something similar.
rp connects back to rdm for communication using a unix domain socket. This is fixable by specifying a --tcp-port both when starting rdm and making some changes to rp to connect over tcp instead of unix domain socket for its ipc.
I can help with the latter which I think should be relatively easy.
The former might be problematic in terms of performance however. You might be able to just let rp write to a local path on the remote machine and copy the contents back when it finishes. We used to have support for this inside rtags but were unable to make it pay off enough for it to be worthwhile maintaining.
Anders
On Tue, Dec 5, 2017 at 10:18 PM, solotim notifications@github.com wrote:
If I create a wrapper on rp like below, I see the rp.bin(the binary rp executable) execute on remote machine, but it hangs. How should I debug it?
qrsh -now no -cwd -j y -P bnormal -V rp.bin $*
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Andersbakken/rtags/issues/1108#issuecomment-349546530, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEdSipHoRvtgEkxa3otVpsuKdWKLvaiks5s9jHTgaJpZM4Q0L78 .
A really cool form of this would be to add a form of rp that had an invocation syntax similar enough to clang/gcc that it can be used with https://github.com/icecc/icecream. I think this would require that it support the -E flag (ideally implying -frewrite-includes) and is able to read from and write to stdin/stdout. This could work by outputing a simple file with everything rtags extracts from each TU, and then have a separate local process that reads the output and updates the local database.
We have a fairly large icecream cluster at work and a lot of us run rtags. Rebuilding the world including linking takes \~2 minutes, while reindexing takes 10\~20.
@Andersbakken Thanks for the info. I just realized that this might not work for me...
Yeah. It's tricky with nfs mounts. Note that rp doesn't read from the cache, it only writes. As such you could possibly set up a system to scp the files back and drop them in place after it finishes.
Anders
On Sat, Dec 9, 2017 at 10:48 PM, solotim notifications@github.com wrote:
@Andersbakken https://github.com/andersbakken Thanks for the info. I just realized that this might not work for me...
- We have a bunch of good NFS mount, so access remote file is not a problem.
- but the slow IO of NFS lead very bad rdm performance to me; to improve the performance, I used /dev/shm/
as rdm cache; it got sped up amazingly, with comparable runtime as Eclipse CDT indexer. - So, if I submit rp to other machines, they can't access the cache of local machine, since /dev/shm is local-only memory disk...
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Andersbakken/rtags/issues/1108#issuecomment-350528936, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEdSjBSCpls_F0N_9v2NUKfBwLxWuCBks5s-36hgaJpZM4Q0L78 .
Please mark appropriate
Problem description
Expected behavior
Describe what you expected to happen.
Actual behavior
Describe what actually happened.
Environment
Your operating system:
LLVM/Clang version:
Feature request
rdm spawn a number of rp (12 by default) on local machine for indexing. If there is strong compute power in a farm network, how can one setup rdm to "submit" rp to other machines?
By doing so, it can lighten the burden of local machine, and speed up indexing with tons of machines in the forest.