to my high freak friends.
- Nonius
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
- TonyC
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
to my high freak friends.
take it from an APLer, if your using kdb/q, pick up a book called "q tips" by Psaris ... and "q for mortals" by Borror
flaneur/boulevardier/remittance man/energy trader
- TonyC
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
to my high freak friends.
take it from an APLer, if your using kdb/q, pick up a book called "q tips" by Psaris ... and "q for mortals" by Borror
flaneur/boulevardier/remittance man/energy trader
- jslade
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
to my high freak friends.
If Nonius was using q before talking to me, I would have to fly out to London and issue a noogie.
qSharp is an IPC framework though; no relation to the APL awesome-sauce.
If you need a non-blocking socket, http://liblfds.org is pretty good.
qSharp is an IPC framework though; no relation to the APL awesome-sauce.
If you need a non-blocking socket, http://liblfds.org is pretty good.
"Alles hat ein ende, nun die wurst hat zwei."
- Nonius
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
to my high freak friends.
hey jslade! apologies I ain't using it! promise!
the guy sending me some messages might be. Ok, I'll reach out to him.
thanks for the nonblocking socket link.
the guy sending me some messages might be. Ok, I'll reach out to him.
thanks for the nonblocking socket link.
Chiral is Tyler Durden
- ast4
- Posts: 0
- Joined: Thu Jan 01, 2004 12:00 am
to my high freak friends.
A bit slow to the party, but what exactly are you trying to solve? Are you running single strategy/config process because you're very sensitive to latency? Or are you running multi strategy/config out of a single process and only somewhat latency sensitive? etc..
Another poster pointed this out, which I agree with - the definition of 'better' is largely problem dependent. For example, in the second example I gave, you may run into issues if you're doing spin and processing all book events as a flood of events comes in.
Since someone else mentioned core pinning. You can also look into setting the scheduling policy (http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html) and priority (http://man7.org/linux/man-pages/man2/setpriority.2.html).
Another poster pointed this out, which I agree with - the definition of 'better' is largely problem dependent. For example, in the second example I gave, you may run into issues if you're doing spin and processing all book events as a flood of events comes in.
Since someone else mentioned core pinning. You can also look into setting the scheduling policy (http://man7.org/linux/man-pages/man2/sched_setscheduler.2.html) and priority (http://man7.org/linux/man-pages/man2/setpriority.2.html).
"Mathematicians are machines for turning coffee into theorems!"
-
liblfds-admin
- Posts: 1
- Joined: Thu Jan 01, 2004 12:00 am
to my high freak friends.
> If you need a non-blocking socket, http://liblfds.org is pretty
> good.
Hi. I am the author of liblfds.
There are no socket APIs in the library. I may be wrong, but I think you may mean a queue?
The library as of version 7.1.0 contains the "standard" M&S queue for many/many/unbounded, but the performance of that queue is poor (better than all locking queues using the same design, but still, poor; and be aware that if all threads are on the same physical core, the M&S queue will always be slower than locking queues).
There is a bounded/many/many queue, but it is not lock-free; there is a very small window where locking can occur. There is also no benchmark, so there are no hard figures for performance. I expect it to be about three times faster than the M&S queue, but I could be completely wrong.
There is bounded/single/single queue, which is memory barrier only, and so goes like the blazes - no benchmark yet, but I expect ten million plus operations per second. The problem is bounding.
7.2.0 - not yet released - contains an unbounded/single/single, which should fulfill that particular niche well.
> good.
Hi. I am the author of liblfds.
There are no socket APIs in the library. I may be wrong, but I think you may mean a queue?
The library as of version 7.1.0 contains the "standard" M&S queue for many/many/unbounded, but the performance of that queue is poor (better than all locking queues using the same design, but still, poor; and be aware that if all threads are on the same physical core, the M&S queue will always be slower than locking queues).
There is a bounded/many/many queue, but it is not lock-free; there is a very small window where locking can occur. There is also no benchmark, so there are no hard figures for performance. I expect it to be about three times faster than the M&S queue, but I could be completely wrong.
There is bounded/single/single queue, which is memory barrier only, and so goes like the blazes - no benchmark yet, but I expect ten million plus operations per second. The problem is bounding.
7.2.0 - not yet released - contains an unbounded/single/single, which should fulfill that particular niche well.
-
netmonk
- Posts: 1
- Joined: Thu Jan 01, 2004 12:00 am
to my high freak friends.
Not only pinning process to one core is required, also isolating this specific core (and may be others) from the scheduler (isolcpu) to avoid other process to run on this specific core.
You can also avoid the kernel tick which introduce huge jitter (tickless mode).
You can also pine network interruption on specific core if you are not doing kernel bypass. With good care of wich core you bind them to have efficient cache communication with kernel and process.
Then you can tweak sysctl, tcp/udp queue size, steering... vmstat.interval.
Non blocking socket, infinite pooling.
If you are interested and i see some java here, you can join the "mechanical sympathy" google groups for very good technical talks about low latency and "high freaks" especially for Java
(im not using java btw).
Regards
You can also avoid the kernel tick which introduce huge jitter (tickless mode).
You can also pine network interruption on specific core if you are not doing kernel bypass. With good care of wich core you bind them to have efficient cache communication with kernel and process.
Then you can tweak sysctl, tcp/udp queue size, steering... vmstat.interval.
Non blocking socket, infinite pooling.
If you are interested and i see some java here, you can join the "mechanical sympathy" google groups for very good technical talks about low latency and "high freaks" especially for Java
(im not using java btw).
Regards