1

Cassandra 用の新しいクックブックをセットアップしようとしていますcassandra.yamlが、ファイルには最適な設定に関する次のコメントがあります。

# For workloads with more data than can fit in memory, Cassandra's
# bottleneck will be reads that need to fetch data from
# disk. "concurrent_reads" should be set to (16 * number_of_drives) in
# order to allow the operations to enqueue low enough in the stack
# that the OS and drives can reorder them.
#
# On the other hand, since writes are almost never IO bound, the ideal
# number of "concurrent_writes" is dependent on the number of cores in
# your system; (8 * number_of_cores) is a good rule of thumb.

ただし、デプロイされたサーバーのハードウェア設定が異なる可能性があるため、属性で事前定義されたnumbers of coresまたはを判別する方法はありません。numbers of disk drives

デプロイされたハードウェア設定で属性を動的に上書きすることは可能ですか? Opscode docを読みましたが、出力をキャプチャする方法がないと思います cat /proc/cpuinfo | grep processor | wc -l

私は次のようなことを考えていました:

クックブック-cassandra/recipes/default.rb

cores = command "cat /proc/cpuinfo | grep processor | wc -l"
node.default["cassandra"]["concurrent_reads"] = cores*8
node.default["cassandra"]["concurrent_writes"] = cores*8

クックブック-cassandra/attributes/default.rb

default[:cassandra] = {
  ...
  # determined by 8 * number of cores
  :concurrent_reads => 16,
  :concurrent_writes => 16,
  ..
}
4

3 に答える 3

2

stdoutChef でキャプチャできますmixlib-shellout(ドキュメントはこちら: https://github.com/opscode/mixlib-shellout )。

あなたの例では、次のようなことができます:

cc = Mixlib::ShellOut.new("cat /proc/cpuinfo | grep processor | wc -l")
cores = cc.run_command.stdout.to_i # runs it, gets stdout, converts to integer
于 2013-07-12T19:21:50.887 に答える
2

レシピでこれを行う方法を見つけましたが、まだ検証するためにどのボックスにも展開していません。

num_cores = Integer(`cat /proc/cpuinfo | grep processor | wc -l`)
if ( num_cores > 8 && num_cores != 0 ) # sanity check
  node.default["cassandra"]["concurrent_reads"] = (8 * num_cores)
  node.default["cassandra"]["concurrent_writes"] = (8 * num_cores)
end
于 2013-07-13T00:34:34.350 に答える
1

私はchef 11を使用しているため、これは以前のバージョンでは利用できない場合がありますがnode['cpu']、CPU、コアなどに関する情報を含む属性があります.

chef > x = nodes.show 'nodename.domain'; true
=> true
chef > x['cpu']['total']
=> 16

そして、あなたのレシピでそれを使用することができます。それがNginxクックブックのやり方です。

于 2014-11-07T17:31:58.860 に答える