You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Paulo Motta (JIRA)" <ji...@apache.org> on 2016/03/14 21:22:33 UTC

[jira] [Commented] (CASSANDRA-11303) New inbound throughput parameters for streaming

    [ https://issues.apache.org/jira/browse/CASSANDRA-11303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15194055#comment-15194055 ] 

Paulo Motta commented on CASSANDRA-11303:
-----------------------------------------

Thanks for the patch [~skonno]. Overall your approach looks good, you need to make a few adjustments:
* As you already noticed, limiting the inbound throughput will be a bit trickier because the data consumption will be performed internally by {{SSTableMultiWriter.append}}. One idea is to wrap the {{LZFInputStream}} into a new {{ThrottledInputStream}} (extending {{FilterInputStream}}) that receives a {{RateLimiter}} object and transparently acquires the permit before each {{read*}} operation.
* The same static {{RateLimiter}} object is being shared between inbound and outgoing streams on {{StreamRateLimiter}}, you'll need to have 4 static {{RateLimiter}} objects: {{inboundLimiter, outboundLimiter, inboundInterDCLimiter, outboundInterDCLimiter}}.
* As {{StreamRateLimiter}} will become more complex, I think it can move to its own file instead of  being part of {{StreamManager}}
* Add property and description to {{cassandra.yaml}}
* Add similar support to {{CompressedStreamReader}}

After you have your initial version ready, if you could raise a test cluster (check it out [ccm|https://github.com/pcmanus/ccm]) and check if the new property is working as expected that would be great.

> New inbound throughput parameters for streaming
> -----------------------------------------------
>
>                 Key: CASSANDRA-11303
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11303
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Configuration
>            Reporter: Satoshi Konno
>            Priority: Minor
>         Attachments: cassandra_inbound_stream.diff
>
>
> Hi,
> To specify stream throughputs of a node more clearly, I would like to add the following new inbound parameters like existing outbound parameters in the cassandra.yaml.
> - stream_throughput_inbound_megabits_per_sec
> - inter_dc_stream_throughput_outbound_megabits_per_sec  
> We use only the existing outbound parameters now, but it is difficult to control the total throughputs of a node. In our production network, some critical alerts occurs when a node exceed the specified total throughput which is the sum of the input and output throughputs.
> In our operation of Cassandra, the alerts occurs during the bootstrap or repair processing when a new node is added. In the worst case, we have to stop the operation of the exceed node.
> I have attached the patch under consideration. I would like to add a new limiter class, StreamInboundRateLimiter, and use the limiter class in StreamDeserializer class. I use Row::dataSize( )to get the input throughput in StreamDeserializer::newPartition(), but I am not sure whether the dataSize() returns the correct data size.
> Can someone please tell me how to do it ?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)