cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paulo Motta (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-11303) New inbound throughput parameters for streaming
Date Mon, 14 Mar 2016 20:22:33 GMT

    [ 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)

Mime
View raw message