Hi Jeff, I've not looked at the new inter-node latency in 4.0 yet.
I think it isn't blocked by commitlog. In 3.11.3, I've probed each Paxos phase and commitlog sync. (In the investigation, I didn't use cassandra-stress tool. The workload has LWT read requests.) The below table shows the average latency of each phase. They are including inter-node messaging because I added `metrics` to StorageProxy#cas(). It takes only 2,607 microseconds on average to sync commitlog in `BatchCommitlogService`. But each Paxos phase takes more than a few milliseconds except for the commitlog sync. Especially, though the read phase doesn't have write process, it takes about 5 milliseconds. MetricsLatency [us] CAS Read 13556 CAS Write 32625 Prepare phase 8677 Read phase 4889 Propose phase 8706 Commit phase 10619 Thanks, Yuji 2018年11月28日(水) 17:44 Jeff Jirsa <jji...@gmail.com>: > Are you sure you’re blocked on internode and not commitlog? Batch is > typically not what people expect (group commitlog in 4.0 is probably closer > to what you think batch does). > > -- > Jeff Jirsa > > > On Nov 27, 2018, at 10:55 PM, Yuji Ito <y...@phact-columba.com> wrote: > > Hi, > > Thank you for the reply. > I've measured LWT throughput in 4.0. > > I used the cassandra-stress tool to insert rows with LWT for 3 minutes on > i3.xlarge and i3.4xlarge > For 3.11, I modified the tool to support LWT. > Before each measurement, I cleaned up all Cassandra data. > > The throughput in 4.0 is 5 % faster than 3.11. > The CPU load of i3.4xlarge (16 vCPUs) is only up to 75% in both versions. > And, the throughput was slower than 4 times that of i3.xlarge. > I think the throughput wasn't bounded by CPU also in 4.0. > > The CPU load of i3.4xlarge is up to 80 % with non-LWT write. > > I wonder what is the bottleneck for writes on a many-core machine if the > issue about messaging has been resolved in 4.0. > Can I use up CPU to insert rows by changing any parameter? > > # LWT insert > * Cassandra 3.11.3 > | instance type | # of threads | concurrent_writes | Throughput [op/s] | > | i3.xlarge | 64 | 32 | 2815 | > | i3.4xlarge | 256 | 128 | 9506 | > | i3.4xlarge | 512 | 256 | 10540 | > > * Cassandra 4.0 (trunk) > | instance type | # of threads | concurrent_writes | Throughput [op/s] | > | i3.xlarge | 64 | 32 | 2951 | > | i3.4xlarge | 256 | 128 | 9816 | > | i3.4xlarge | 512 | 256 | 11055 | > > * Environment > - 3 node cluster > - Replication factor: 3 > - Node instance: AWS EC2 i3.xlarge / i3.4xlarge > > * C* configuration > - Apache Cassandra 3.11.3 / 4.0 (trunk) > - commitlog_sync: batch > - concurrent_writes: 32, 256 > - native_transport_max_threads: 128(default), 256 (when concurrent_writes > is 256) > > Thanks, > Yuji > > > 2018年11月26日(月) 17:27 sankalp kohli <kohlisank...@gmail.com>: > >> Inter-node messaging is rewritten using Netty in 4.0. It will be better >> to test it using that as potential changes will mostly land on top of that. >> >> On Mon, Nov 26, 2018 at 7:39 AM Yuji Ito <y...@phact-columba.com> wrote: >> >>> Hi, >>> >>> I'm investigating LWT performance with C* 3.11.3. >>> It looks that the performance is bounded by messaging latency when many >>> requests are issued concurrently. >>> >>> According to the source code, the number of messaging threads per node >>> is only 1 thread for incoming and 1 thread for outbound "small" message to >>> another node. >>> >>> I guess these threads are frequently interrupted because many threads >>> are executed when many requests are issued. >>> Especially, I think it affects the LWT performance when many LWT >>> requests which need lots of inter-node messaging are issued. >>> >>> I measured that latency. It took 2.5 ms in average to enqueue a message >>> at a node and to receive the message at the **same** node with 96 >>> concurrent LWT writes. >>> Is it normal? I think it is too big latency, though a message was sent >>> to the same node. >>> >>> Decreasing numbers of other threads like `concurrent_counter_writes`, >>> `concurrent_materialized_view_writes` reduced a bit the latency. >>> Can I change any other parameter to reduce the latency? >>> I've tried using message coalescing, but they didn't reduce that. >>> >>> * Environment >>> - 3 node cluster >>> - Replication factor: 3 >>> - Node instance: AWS EC2 i3.xlarge >>> >>> * C* configuration >>> - Apache Cassandra 3.11.3 >>> - commitlog_sync: batch >>> - concurrent_reads: 32 (default) >>> - concurrent_writes: 32 (default) >>> >>> Thanks, >>> Yuji >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org >>> For additional commands, e-mail: dev-h...@cassandra.apache.org >> >>