bitcask dead byte and fragment for riak-cs

Mohamad Taufiq taufiq at bukalapak.com
Fri Oct 9 11:32:09 EDT 2015


Hello there,

i have problems with my riak-cs cluster.

i have 5 riak nodes, each node have 11 TB of storage.
my riak-cs deployment is just following 5 minutes installation tutorial.
but, after running for 1 month. surprisingly, i have storage problem.

my bitcask folder (/data/riak/bitcask) is storing a huge amount of data.
and i tried to adjust bitcask merge fragment and deadbyte trigers and
treshold as possible. but it's still don't give me reasonable disk usage.
my purpose using riak-cs is only for storing images that has been migrated
from our nfs servers. but it has only 4 TB of total size of images.

why it takes a lot of disk usage for bitcask ? is it normal ? now my disk
space is gona be explode. it grows rapidly. and i don't know what should i
do.

here is my configuration files.

*/etc/riak/riak.conf*

## Where to emit the default log messages (typically at 'info'
## severity):
## off: disabled
## file: the file specified by log.console.file
## console: to standard output (seen when using `riak attach-direct`)
## both: log.console.file and standard out.
##
## Default: file
##
## Acceptable values:
##   - one of: off, file, console, both
log.console = file

## The severity level of the console log, default is 'info'.
##
## Default: info
##
## Acceptable values:
##   - one of: debug, info, notice, warning, error, critical, alert,
emergency, none
log.console.level = info

## When 'log.console' is set to 'file' or 'both', the file where
## console messages will be logged.
##
## Default: $(platform_log_dir)/console.log
##
## Acceptable values:
##   - the path to a file
log.console.file = $(platform_log_dir)/console.log

## The file where error messages will be logged.
##
## Default: $(platform_log_dir)/error.log
##
## Acceptable values:
##   - the path to a file
log.error.file = $(platform_log_dir)/error.log

## When set to 'on', enables log output to syslog.
##
## Default: off
##
## Acceptable values:
##   - on or off
log.syslog = off

## Whether to enable the crash log.
##
## Default: on
##
## Acceptable values:
##   - on or off
log.crash = on

## If the crash log is enabled, the file where its messages will
## be written.
##
## Default: $(platform_log_dir)/crash.log
##
## Acceptable values:
##   - the path to a file
log.crash.file = $(platform_log_dir)/crash.log

## Maximum size in bytes of individual messages in the crash log
##
## Default: 64KB
##
## Acceptable values:
##   - a byte size with units, e.g. 10GB
log.crash.maximum_message_size = 64KB

## Maximum size of the crash log in bytes, before it is rotated
##
## Default: 10MB
##
## Acceptable values:
##   - a byte size with units, e.g. 10GB
log.crash.size = 10MB

## The schedule on which to rotate the crash log.  For more
## information see:
##
https://github.com/basho/lager/blob/master/README.md#internal-log-rotation
##
## Default: $D0
##
## Acceptable values:
##   - text
log.crash.rotation = $D0

## The number of rotated crash logs to keep. When set to
## 'current', only the current open log file is kept.
##
## Default: 5
##
## Acceptable values:
##   - an integer
##   - the text "current"
log.crash.rotation.keep = 5

## Name of the Erlang node
##
## Default: riak at 127.0.0.1
##
## Acceptable values:
##   - text
nodename = riak4 at 172.16.1.58

## Cookie for distributed node communication.  All nodes in the
## same cluster should use the same cookie or they will not be able to
## communicate.
##
## Default: riak
##
## Acceptable values:
##   - text
distributed_cookie = riak

## Sets the number of threads in async thread pool, valid range
## is 0-1024. If thread support is available, the default is 64.
## More information at: http://erlang.org/doc/man/erl.html
##
## Default: 64
##
## Acceptable values:
##   - an integer
## erlang.async_threads = 64

erlang.async_threads = 1024

## The number of concurrent ports/sockets
## Valid range is 1024-134217727
##
## Default: 65536
##
## Acceptable values:
##   - an integer
erlang.max_ports = 65536

## Set scheduler forced wakeup interval. All run queues will be
## scanned each Interval milliseconds. While there are sleeping
## schedulers in the system, one scheduler will be woken for each
## non-empty run queue found. An Interval of zero disables this
## feature, which also is the default.
## This feature is a workaround for lengthy executing native code, and
## native code that do not bump reductions properly.
## More information: http://www.erlang.org/doc/man/erl.html#+sfwi
##
## Default: 500
##
## Acceptable values:
##   - an integer
## erlang.schedulers.force_wakeup_interval = 500

## Enable or disable scheduler compaction of load. By default
## scheduler compaction of load is enabled. When enabled, load
## balancing will strive for a load distribution which causes as many
## scheduler threads as possible to be fully loaded (i.e., not run out
## of work). This is accomplished by migrating load (e.g. runnable
## processes) into a smaller set of schedulers when schedulers
## frequently run out of work. When disabled, the frequency with which
## schedulers run out of work will not be taken into account by the
## load balancing logic.
## More information: http://www.erlang.org/doc/man/erl.html#+scl
##
## Default: false
##
## Acceptable values:
##   - one of: true, false
## erlang.schedulers.compaction_of_load = false

## Enable or disable scheduler utilization balancing of load. By
## default scheduler utilization balancing is disabled and instead
## scheduler compaction of load is enabled which will strive for a
## load distribution which causes as many scheduler threads as
## possible to be fully loaded (i.e., not run out of work). When
## scheduler utilization balancing is enabled the system will instead
## try to balance scheduler utilization between schedulers. That is,
## strive for equal scheduler utilization on all schedulers.
## More information: http://www.erlang.org/doc/man/erl.html#+sub
##
## Acceptable values:
##   - one of: true, false
## erlang.schedulers.utilization_balancing = true

## Number of partitions in the cluster (only valid when first
## creating the cluster). Must be a power of 2, minimum 8 and maximum
## 1024.
##
## Default: 64
##
## Acceptable values:
##   - an integer
## ring_size = 64

## Number of concurrent node-to-node transfers allowed.
##
## Default: 2
##
## Acceptable values:
##   - an integer
## transfer_limit = 2

## Default cert location for https can be overridden
## with the ssl config variable, for example:
##
## Acceptable values:
##   - the path to a file
## ssl.certfile = $(platform_etc_dir)/cert.pem

## Default key location for https can be overridden with the ssl
## config variable, for example:
##
## Acceptable values:
##   - the path to a file
## ssl.keyfile = $(platform_etc_dir)/key.pem

## Default signing authority location for https can be overridden
## with the ssl config variable, for example:
##
## Acceptable values:
##   - the path to a file
## ssl.cacertfile = $(platform_etc_dir)/cacertfile.pem

## DTrace support Do not enable 'dtrace' unless your Erlang/OTP
## runtime is compiled to support DTrace.  DTrace is available in
## R15B01 (supported by the Erlang/OTP official source package) and in
## R14B04 via a custom source repository & branch.
##
## Default: off
##
## Acceptable values:
##   - on or off
dtrace = off

## Platform-specific installation paths (substituted by rebar)
##
## Default: /usr/local/sbin
##
## Acceptable values:
##   - the path to a directory
platform_bin_dir = /usr/local/sbin

##
## Default: /usr/local/riak
##
## Acceptable values:
##   - the path to a directory
platform_data_dir = /usr/local/riak

##
## Default: /usr/local/etc/riak
##
## Acceptable values:
##   - the path to a directory
platform_etc_dir = /usr/local/etc/riak

##
## Default: /usr/local/lib/riak/lib
##
## Acceptable values:
##   - the path to a directory
platform_lib_dir = /usr/local/lib/riak/lib

##
## Default: /var/log/riak
##
## Acceptable values:
##   - the path to a directory
platform_log_dir = /var/log/riak

## Enable consensus subsystem. Set to 'on' to enable the
## consensus subsystem used for strongly consistent Riak operations.
##
## Default: off
##
## Acceptable values:
##   - on or off
## strong_consistency = on

## listener.http.<name> is an IP address and TCP port that the Riak
## HTTP interface will bind.
##
## Default: 127.0.0.1:8098
##
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
listener.http.internal = 172.16.1.58:8098

## listener.protobuf.<name> is an IP address and TCP port that the Riak
## Protocol Buffers interface will bind.
##
## Default: 127.0.0.1:8087
##
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
listener.protobuf.internal = 172.16.1.58:8087

## The maximum length to which the queue of pending connections
## may grow. If set, it must be an integer > 0. If you anticipate a
## huge number of connections being initialized *simultaneously*, set
## this number higher.
##
## Default: 128
##
## Acceptable values:
##   - an integer
protobuf.backlog = 1024

## listener.https.<name> is an IP address and TCP port that the Riak
## HTTPS interface will bind.
##
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
## listener.https.internal = 127.0.0.1:8098

## How Riak will repair out-of-sync keys. Some features require
## this to be set to 'active', including search.
## * active: out-of-sync keys will be repaired in the background
## * passive: out-of-sync keys are only repaired on read
## * active-debug: like active, but outputs verbose debugging
## information
##
## Default: active
##
## Acceptable values:
##   - one of: active, passive, active-debug
anti_entropy = active

## Specifies the storage engine used for Riak's key-value data
## and secondary indexes (if supported).
##
## Default: bitcask
##
## Acceptable values:
##   - one of: bitcask, leveldb, memory, multi, prefix_multi
## storage_backend = bitcask

## Simplify prefix_multi configuration for Riak CS. Keep this
## commented out unless Riak is configured for Riak CS.
##
## Acceptable values:
##   - an integer
## cs_version = 20000

## Controls which binary representation of a riak value is stored
## on disk.
## * 0: Original erlang:term_to_binary format. Higher space overhead.
## * 1: New format for more compact storage of small values.
##
## Default: 1
##
## Acceptable values:
##   - the integer 1
##   - the integer 0
object.format = 1

## Reading or writing objects bigger than this size will write a
## warning in the logs.
##
## Default: 5MB
##
## Acceptable values:
##   - a byte size with units, e.g. 10GB
object.size.warning_threshold = 5MB

## Writing an object bigger than this will send a failure to the
## client.
##
## Default: 50MB
##
## Acceptable values:
##   - a byte size with units, e.g. 10GB
object.size.maximum = 50MB

## Writing an object with more than this number of siblings will
## generate a warning in the logs.
##
## Default: 25
##
## Acceptable values:
##   - an integer
object.siblings.warning_threshold = 100

## Writing an object with more than this number of siblings will
## send a failure to the client.
##
## Default: 100
##
## Acceptable values:
##   - an integer
object.siblings.maximum = 1000

## A path under which bitcask data files will be stored.
##
## Default: $(platform_data_dir)/bitcask
##
## Acceptable values:
##   - the path to a directory
bitcask.data_root = $(platform_data_dir)/bitcask

## Configure how Bitcask writes data to disk.
## erlang: Erlang's built-in file API
## nif: Direct calls to the POSIX C API
## The NIF mode provides higher throughput for certain
## workloads, but has the potential to negatively impact
## the Erlang VM, leading to higher worst-case latencies
## and possible throughput collapse.
##
## Default: erlang
##
## Acceptable values:
##   - one of: erlang, nif
bitcask.io_mode = erlang

## Set to 'off' to disable the admin panel.
##
## Default: off
##
## Acceptable values:
##   - on or off
riak_control = on

## Authentication mode used for access to the admin panel.
##
## Default: off
##
## Acceptable values:
##   - one of: off, userlist
riak_control.auth.mode = off

## If riak control's authentication mode (riak_control.auth.mode)
## is set to 'userlist' then this is the list of usernames and
## passwords for access to the admin panel.
## To create users with given names, add entries of the format:
## riak_control.auth.user.USERNAME.password = PASSWORD
## replacing USERNAME with the desired username and PASSWORD with the
## desired password for that user.
##
## Acceptable values:
##   - text
## riak_control.auth.user.admin.password = pass

## This parameter defines the percentage of total server memory
## to assign to LevelDB. LevelDB will dynamically adjust its internal
## cache sizes to stay within this size.  The memory size can
## alternately be assigned as a byte count via leveldb.maximum_memory
## instead.
##
## Default: 70
##
## Acceptable values:
##   - an integer
leveldb.maximum_memory.percent = 70

## To enable Search set this 'on'.
##
## Default: off
##
## Acceptable values:
##   - on or off
search = off

## How long Riak will wait for Solr to start. The start sequence
## will be tried twice. If both attempts timeout, then the Riak node
## will be shutdown. This may need to be increased as more data is
## indexed and Solr takes longer to start. Values lower than 1s will
## be rounded up to the minimum 1s.
##
## Default: 30s
##
## Acceptable values:
##   - a time duration with units, e.g. '10s' for 10 seconds
search.solr.start_timeout = 30s

## The port number which Solr binds to.
## NOTE: Binds on every interface.
##
## Default: 8093
##
## Acceptable values:
##   - an integer
search.solr.port = 8093

## The port number which Solr JMX binds to.
## NOTE: Binds on every interface.
##
## Default: 8985
##
## Acceptable values:
##   - an integer
search.solr.jmx_port = 8985

## The options to pass to the Solr JVM.  Non-standard options,
## i.e. -XX, may not be portable across JVM implementations.
## E.g. -XX:+UseCompressedStrings
##
## Default: -d64 -Xms1g -Xmx1g -XX:+UseStringCache -XX:+UseCompressedOops
##
## Acceptable values:
##   - text
search.solr.jvm_options = -d64 -Xms1g -Xmx1g -XX:+UseStringCache
-XX:+UseCompressedOops

buckets.default.allow_mult = true
handoff.port = 8099

max_concurrent_requests = 50000
erlang.process_limit = 250000

*/etc/riak/advanced.config*
[
   {bitcask, [
{merge_window, always},
         {max_file_size, 134217728},
{frag_merge_trigger, 5},
{frag_threshold, 5},
         {dead_bytes_merge_trigger, 1048},
         {dead_bytes_threshold, 1048}
      ]},
   {riak_kv, [
      {add_paths, ["/usr/local/lib/riak-cs/lib/riak_cs-2.0.1/ebin"]},
      {storage_backend, riak_cs_kv_multi_backend},
      {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
      {multi_backend_default, be_default},
      {multi_backend,[
         {be_default, riak_kv_eleveldb_backend, [
            {total_leveldb_mem_percent, 30},
            {data_root, "/data/riak/leveldb"}
         ]},
         {be_blocks, riak_kv_bitcask_backend, [
            {data_root, "/data/riak/bitcask"}
         ]}
      ]}
   ]}
].


*/etc/riak-cs/riak-cs.conf*

## Riak CS http/https port and IP address to listen at for object
## storage activity
##
## Default: 127.0.0.1:8080
##
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
listener = 172.16.1.58:8080

## Riak node to which Riak CS accesses
##
## Default: 127.0.0.1:8087
##
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
riak_host = 172.16.1.58:8087

## Configuration for access to request
## serialization service
##
## Default: 127.0.0.1:8085
##
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
stanchion_host = 172.16.1.58:8085

## SSL configuration for access to request serialization
## service. With `on`, Riak CS connects to Stanchion with SSL.
##
## Default: off
##
## Acceptable values:
##   - on or off
stanchion.ssl = off

## Default cert location for https can be overridden
## with the ssl config variable, for example:
##
## Acceptable values:
##   - the path to a file
## ssl.certfile = $(platform_etc_dir)/cert.pem

## Default key location for https can be overridden with the ssl
## config variable, for example:
##
## Acceptable values:
##   - the path to a file
## ssl.keyfile = $(platform_etc_dir)/key.pem

## Enable this to allow the creation of an admin user when
## setting up a system. It is recommended to only enable this
## temporarily unless your use-case specifically dictates letting
## anonymous users to create accounts.
##
## Default: off
##
## Acceptable values:
##   - on or off
anonymous_user_creation = off

## IP address and port number to listen on for system
## administration tasks.
##
## Acceptable values:
##   - an IP/port pair, e.g. 127.0.0.1:10011
## admin.listener = 127.0.0.1:8000

## Admin user credentials. Admin access like /riak-cs/stats
## requires this entry to be set properly. The credentials specified
## here must match the admin credentials specified in the stanchion
## app.config for the system to function properly.
##
## Default: admin-key
##
## Acceptable values:
##   - text
admin.key = CYM2XSFWEGZH1FQFF1PA

##
## Default: admin-secret
##
## Acceptable values:
##   - text
admin.secret = WBbS71LgE1CcUX2eA85h1kuCh93b3VoY7DwBGw==

## Root host name which Riak CS accepts.
## Your CS bucket at s3.example.com will be accessible
## via URL like http://bucket.s3.example.com/object/name
##
## Default: s3.amazonaws.com
##
## Acceptable values:
##   - text
root_host = s3.amazonaws.com

## Fixed pool size of primary connection pool which is used
## to service the majority of API requests related to the upload
## or retrieval of objects.
##
## Default: 128
##
## Acceptable values:
##   - an integer
pool.request.size = 256

## Fixed pool size of secondary connection pool which is used
## strictly for requests to list the contents.
##
## Default: 5
##
## Acceptable values:
##   - an integer
pool.list.size = 10

## Max number of buckets that each user can create.
## If this limit is exceeded, bucket creation will fails
## for the specific user.
##
## Default: 100
##
## Acceptable values:
##   - an integer
##   - the text "unlimited"
max_buckets_per_user = 100

## Switch whether Riak CS trusts 'X-Forwarded-For' header.
## If your load balancer adds 'X-Forwarded-For' header
## and it is reliable (able to gaurantee it is not added
## by malicious user), turn this true. Otherwise, by
## default, Riak CS takes source IP address as an input.
##
## Default: off
##
## Acceptable values:
##   - on or off
trust_x_forwarded_for = off

## The time to retain the block for an object after it has been
## deleted.  This leeway time is set to give the delete indication
## time to propogate to all replicas.
##
## Default: 24h
##
## Acceptable values:
##   - a time duration with units, e.g. '10s' for 10 seconds
gc.leeway_period = 10m

## How often the garbage collection daemon
## waits in-between gc batches.
##
## Default: 15m
##
## Acceptable values:
##   - a time duration with units, e.g. '10s' for 10 seconds
##   - the text "infinity"
gc.interval = 5m

## How long a move to the garbage
## collection to do list can remain
## failed, before we retry it.
##
## Default: 6h
##
## Acceptable values:
##   - a time duration with units, e.g. '10s' for 10 seconds
gc.retry_interval = 6m

## How often to flush the access stats; integer factor of
## access_archive_period (1 == once per period; 2 == twice per period,
## etc.)
##
## Default: 1
##
## Acceptable values:
##   - an integer
stats.access.flush_factor = 1

## Additional access stats flush trigger - flush after
## this many accesses are recorded, even if the flush
## interval has not expired; integer number of accesses
##
## Default: 1000000
##
## Acceptable values:
##   - an integer
stats.access.flush_size = 1000000

## How large each access archive object is. Should be a
## multiple of stats.access.flush_factor.
##
## Default: 1h
##
## Acceptable values:
##   - a time duration with units, e.g. '10s' for 10 seconds
stats.access.archive_period = 1h

## How many access stats backlog are allowed to pile up in the
## archiver's queue before it starts skipping to catch
## up; integer number of logs
##
## Default: 2
##
## Acceptable values:
##   - an integer
stats.access.archiver.max_backlog = 2

## How many workers to put access stats data to Riak are
## allowed to run concurrently
##
## Default: 2
##
## Acceptable values:
##   - an integer
stats.access.archiver.max_workers = 2

## How large each storage archive object is. Should be
## chosen such that each storage_schedule entry falls in
## a different period.
##
## Default: 1d
##
## Acceptable values:
##   - a time duration with units, e.g. '10s' for 10 seconds
stats.storage.archive_period = 1d

## How many archive periods a user can request in one usage read,
## applied independently to access and storage.  If archive_periods
## are defined as 1 hour, then 744 * 1 hour = 31 days will be the
## longest limit.
##
## Default: 744
##
## Acceptable values:
##   - an integer
stats.usage_request_limit = 744

## custom server name at http response header "Server: Riak CS"
##
## Default: Riak CS
##
## Acceptable values:
##   - text
server.name = Riak CS

## Whether to enable access log.
##
## Default: on
##
## Acceptable values:
##   - on or off
log.access = on

## Access log directory.
##
## Default: $(platform_log_dir)
##
## Acceptable values:
##   - text
log.access.dir = $(platform_log_dir)

## URL rewrite module.
##
## Acceptable values:
##   - text
## rewrite_module = riak_cs_s3_rewrite

## Authentication module.
##
## Acceptable values:
##   - text
## auth_module = riak_cs_s3_auth

## Riak CS version number. This is used to selectively
## enable new features for the current version to better
## support rolling upgrades. New installs should not
## need to modify this. If peforming a rolling upgrade
## then keep the original value (if not defined, Riak CS
## uses 0 instead) of old app.config until all nodes
## have been upgraded and then set to the new value.
##
## Default: 10300
##
## Acceptable values:
##   - an integer
cs_version = 10300

## If your Erlang virtual machine supports DTrace (or
## user-space SystemTap), set dtrace_support to true.
##
## Default: off
##
## Acceptable values:
##   - on or off
dtrace = off

## Where to emit the default log messages (typically at 'info'
## severity):
## off: disabled
## file: the file specified by log.console.file
## console: to standard output (seen when using `riak attach-direct`)
## both: log.console.file and standard out.
##
## Default: file
##
## Acceptable values:
##   - one of: off, file, console, both
log.console = file

## The severity level of the console log, default is 'info'.
##
## Default: info
##
## Acceptable values:
##   - one of: debug, info, notice, warning, error, critical, alert,
emergency, none
log.console.level = info

## When 'log.console' is set to 'file' or 'both', the file where
## console messages will be logged.
##
## Default: $(platform_log_dir)/console.log
##
## Acceptable values:
##   - the path to a file
log.console.file = $(platform_log_dir)/console.log

## The file where error messages will be logged.
##
## Default: $(platform_log_dir)/error.log
##
## Acceptable values:
##   - the path to a file
log.error.file = $(platform_log_dir)/error.log

## When set to 'on', enables log output to syslog.
##
## Default: off
##
## Acceptable values:
##   - on or off
log.syslog = off

## Whether to enable the crash log.
##
## Default: on
##
## Acceptable values:
##   - on or off
log.crash = on

## If the crash log is enabled, the file where its messages will
## be written.
##
## Default: $(platform_log_dir)/crash.log
##
## Acceptable values:
##   - the path to a file
log.crash.file = $(platform_log_dir)/crash.log

## Maximum size in bytes of individual messages in the crash log
##
## Default: 64KB
##
## Acceptable values:
##   - a byte size with units, e.g. 10GB
log.crash.maximum_message_size = 64KB

## Maximum size of the crash log in bytes, before it is rotated
##
## Default: 10MB
##
## Acceptable values:
##   - a byte size with units, e.g. 10GB
log.crash.size = 10MB

## The schedule on which to rotate the crash log.  For more
## information see:
##
https://github.com/basho/lager/blob/master/README.md#internal-log-rotation
##
## Default: $D0
##
## Acceptable values:
##   - text
log.crash.rotation = $D0

## The number of rotated crash logs to keep. When set to
## 'current', only the current open log file is kept.
##
## Default: 5
##
## Acceptable values:
##   - an integer
##   - the text "current"
log.crash.rotation.keep = 5

##
## Default: /var/log/riak-cs
##
## Acceptable values:
##   - the path to a directory
platform_log_dir = /var/log/riak-cs

## Name of the Erlang node
##
## Default: riak-cs at 127.0.0.1
##
## Acceptable values:
##   - text
nodename = riak-cs4 at 172.16.1.58

## Cookie for distributed node communication.  All nodes in the
## same cluster should use the same cookie or they will not be able to
## communicate.
##
## Default: riak
##
## Acceptable values:
##   - text
distributed_cookie = riak

## Sets the number of threads in async thread pool, valid range
## is 0-1024. If thread support is available, the default is 64.
## More information at: http://erlang.org/doc/man/erl.html
##
## Default: 64
##
## Acceptable values:
##   - an integer
erlang.async_threads = 64

## The number of concurrent ports/sockets
## Valid range is 1024-134217727
##
## Default: 65536
##
## Acceptable values:
##   - an integer
erlang.max_ports = 65536

## Set scheduler forced wakeup interval. All run queues will be
## scanned each Interval milliseconds. While there are sleeping
## schedulers in the system, one scheduler will be woken for each
## non-empty run queue found. An Interval of zero disables this
## feature, which also is the default.
## This feature is a workaround for lengthy executing native code, and
## native code that do not bump reductions properly.
## More information: http://www.erlang.org/doc/man/erl.html#+sfwi
##
## Default: 500
##
## Acceptable values:
##   - an integer
## erlang.schedulers.force_wakeup_interval = 500

## Enable or disable scheduler compaction of load. By default
## scheduler compaction of load is enabled. When enabled, load
## balancing will strive for a load distribution which causes as many
## scheduler threads as possible to be fully loaded (i.e., not run out
## of work). This is accomplished by migrating load (e.g. runnable
## processes) into a smaller set of schedulers when schedulers
## frequently run out of work. When disabled, the frequency with which
## schedulers run out of work will not be taken into account by the
## load balancing logic.
## More information: http://www.erlang.org/doc/man/erl.html#+scl
##
## Default: false
##
## Acceptable values:
##   - one of: true, false
## erlang.schedulers.compaction_of_load = false

## Enable or disable scheduler utilization balancing of load. By
## default scheduler utilization balancing is disabled and instead
## scheduler compaction of load is enabled which will strive for a
## load distribution which causes as many scheduler threads as
## possible to be fully loaded (i.e., not run out of work). When
## scheduler utilization balancing is enabled the system will instead
## try to balance scheduler utilization between schedulers. That is,
## strive for equal scheduler utilization on all schedulers.
## More information: http://www.erlang.org/doc/man/erl.html#+sub
##
## Acceptable values:
##   - one of: true, false
## erlang.schedulers.utilization_balancing = true




can anybody help me figure it out. i'm so appreciate if someone could help
me.

Thank you so much
-- 



www.bukalapak.com <http://www.bukapak.com/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20151009/60255c6d/attachment-0002.html>


More information about the riak-users mailing list