54
WiredTiger configura/on variables - Looking under the hood Antonios Giannopoulos Database Administrator – Rackspace Percona Live Europe 2016

Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Embed Size (px)

Citation preview

Page 1: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WiredTigerconfigura/onvariables-Lookingunderthehood

AntoniosGiannopoulosDatabaseAdministrator–Rackspace

PerconaLiveEurope2016

Page 2: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Agenda

Wearegoingtodiscuss:MongoDBWiredTigerConfigura/onVariables

-  Whattheymean?-  Howtoconfigure/change?-  Benchmarks

Page 3: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

BenchmarkspecsRackspaceOnMetalCloudServerv212cores32GBRAM2x800GBSSDs(RAID1)MongoDB3.2.9SysbenchforMongoDBbyTimCallaghanusingdefaultse[ngs

Page 4: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

BenchmarkspecsSysbench:1)  Creates16collec/ons10milliondocumentseach2)  Executesamixedworkloadfor10minutesLoad:Comple/on/mefor(1)TPSCUM:AveragenumberofSysbenchtransac/onsTPSINT:NumberofSysbenchtransac/onsSamplesarecollectedevery10seconds

Page 5: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/on/FilesThreewaystochangeWTvariables:mongod.conf:engineConfig.configStringrun/me:db.adminCommand({setParameter:…})configura/onfile(s):(WiredTiger.basecfg,WiredTiger.config)

Theorderofconfigura/onis:WiredTiger.basecfgfilewired/ger_openconfigura/onstringargument,WiredTiger.configfile,WIREDTIGER_CONFIGenvironmentvariable

Page 6: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/on/mongod.confengineConfig: cacheSizeGB:<number> journalCompressor:<string> directoryForIndexes:<boolean>

configString:<string>,<string>…collec/onConfig: blockCompressor:<string>indexConfig: prefixCompression:<boolean>

setParameter: wiredTigerConcurrentReadTransac/ons:<number> wiredTigerConcurrentWriteTransac/ons:<number>

Page 7: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/on/mongod.confengineConfig: cacheSizeGB:<number> journalCompressor:<string> directoryForIndexes:<boolean>

configString:<string>,<string>…collec/onConfig: blockCompressor:<string>indexConfig: prefixCompression:<boolean>

setParameter: wiredTigerConcurrentReadTransac/ons:<number> wiredTigerConcurrentWriteTransac/ons:<number>

Page 8: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

JournalBenchmarkDefault:SnappyLoad:10minutesand58secondsWithoutcompression:Load:10minutesand21secondsWithoutjournal:Load:8minutesand35seconds

Page 9: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Journal(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

default

withoutcompression

withoutjournal

Page 10: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Journal(inttps)

0

200

400

600

800

1000

1200

1400

0 100 200 300 400 500 600 700

default

withoutcompression

withoutjournal

Page 11: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/on/mongod.confengineConfig: cacheSizeGB:<number> journalCompressor:<string> directoryForIndexes:<boolean>

configString:<string>,<string>…collec/onConfig: blockCompressor:<string>indexConfig: prefixCompression:<boolean>

setParameter: wiredTigerConcurrentReadTransac/ons:<number> wiredTigerConcurrentWriteTransac/ons:<number>

Page 12: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

CompressionAlgorithmssnappy:itgathersdatauptoamaximumof32KB,compressesit,andifcompressionissuccessful,writestheblockroundeduptothenearest4KB.zlib:itgathersmoredataandcompressenoughtofilla32KBblockondisk.Configurablepercollec/on:db.createCollec/on("foo",{storageEngine:{wiredTiger:{configString:"block_compressor=zlib"}}})

Page 13: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

blockCompressorBenchmarkSnappy:Load:10minutesand58secondsZlib:Load:18minutesand21secondsWithoutcompression:Load:10minutesand45seconds

Page 14: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

blockCompressor(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

snappy

zlib

nocompression

Page 15: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

blockCompressor(inttps)

0

200

400

600

800

1000

1200

1400

1600

0 100 200 300 400 500 600 700

snappy

zlib

none

Page 16: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/on/mongod.confengineConfig: cacheSizeGB:<number> journalCompressor:<string> directoryForIndexes:<boolean>

configString:<string>,<string>…collec/onConfig: blockCompressor:<string>indexConfig: prefixCompression:<boolean>

setParameter: wiredTigerConcurrentReadTransac/ons:<number> wiredTigerConcurrentWriteTransac/ons:<number>

Page 17: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Prefixcompressionuseusedusefulusefullyusefulnessuselessuselesslyuselessness

Page 18: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Prefixcompressionuseusedusefulusefullyusefulnessuselessuselesslyuselessness

0:use1:0d2:0ful3:0fully4:0less5:0lessly6:0lessness

Page 19: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Prefixcompressionuseusedusefulusefullyusefulnessuselessuselesslyuselessness

0:use1:0d2:0ful3:0fully4:0less5:0lessly6:0lessness

0:use1:0d2:0ful3:2ly4:0less5:4ly6:4ness

Page 20: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Prefixcompression(load/mes)

Default:Snappycompression:Load:10minutesand58secondsNone:Withoutcompression:Load:09minutesand51seconds

Page 21: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Prefixcompression(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

default

none

Page 22: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Prefixcompression(inttps)

0

200

400

600

800

1000

1200

1400

0 100 200 300 400 500 600 700

default

none

Page 23: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/on/mongod.confengineConfig: cacheSizeGB:<number> journalCompressor:<string> directoryForIndexes:<boolean>

configString:<string>,<string>…collec/onConfig: blockCompressor:<string>indexConfig: prefixCompression:<boolean>

setParameter: wiredTigerConcurrentReadTransacKons:<number> wiredTigerConcurrentWriteTransacKons:<number>

Page 24: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

ConcurrentTransac/onsSpecifythemaximumnumberofconcurrentread/writetransac/ons.Defaultis128mongod.confsetParameter: wiredTigerConcurrentReadTransac/ons:<number> RunKme:db.adminCommand({setParameter:1,wiredTigerConcurrentWriteTransac/ons:<num>})

Page 25: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

ConcurrentTransac/onsBenchmark64Trx:64read/writetranscac/onsLoad:11minutesand06seconds128Trx:Default-128read/writetranscac/onsLoad:10minutesand58seconds256Trx:256read/writetranscac/onsLoad:10minutesand46seconds

Page 26: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

ConcurrentTransac/ons(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

trx-128

trx-64

trx-256

Page 27: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

ConcurrentTransac/ons(inttps)

0

200

400

600

800

1000

1200

1400

0 100 200 300 400 500 600 700

trx-128

trx-64

trx-256

Page 28: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/on/mongod.confengineConfig: cacheSizeGB:<number> journalCompressor:<string> directoryForIndexes:<boolean>

configString:<string>,<string>…collec/onConfig: blockCompressor:<string>indexConfig: prefixCompression:<boolean>

setParameter: wiredTigerConcurrentReadTransac/ons:<number> wiredTigerConcurrentWriteTransac/ons:<number>

Page 29: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

WTconfigura/onEveryWTvariablecanbeassignedtoconfigStringWearegoingtoexamineasubset:-  evic/on_target-  evic/on_trigger-  evic/on_dirty_target-  evic/on_dirty_trigger-  evic/on.threads_min-  evic/on.threads_max-  direct_IO

Page 30: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Evic/on

ResidentObjects Sharedcache

Page 31: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Evic/on

Cachesavesobjects(workingset)

Page 32: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Evic/on

Evic/onTriggers

Page 33: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Evic/on

Evic/onCandidates

Page 34: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Evic/on

Evic/onTarget

Page 35: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evic/on_triggerevicKon_triggeristheoccupiedpercentageofthetotalcachesizethatcausesevic/ontostart.Defaultvalue:95%Acceptablevalues:Between10and99RunKme:db.adminCommand({setParameter:1,wiredTigerEngineRun/meConfig:"evic/on_trigger=71”})mongod.conf:evic/on_trigger=71WiredTiger.config:evic/on_trigger=71

Page 36: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evic/on_targetevicKon_targetistheoveralltargetforevic/on,expressedasapercentageoftotalcachesize.Defaultvalue:80%Acceptablerange:Between10and99(lowerthantrigger)RunKme:db.adminCommand({setParameter:1,wiredTigerEngineRun/meConfig:"evic/on_target=70"})mongod.conf:evic/on_target=70WiredTiger.config:evic/on_target=70

Page 37: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Evic/on_trigger/targetBenchmarkDefault:trigger/target:95/80Load:11minutesand06seconds95/90:trigger/target:95/90Load:11minutesand41seconds90/89:trigger/target:90/89Load:10minutesand16seconds95/94:trigger/target:95/94Load:12minutesand26seconds

Page 38: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evic/on_trigger/target(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

default

95and90

90and89

95and94

Page 39: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Evic/on_trigger/target(inttps)

0

200

400

600

800

1000

1200

1400

1600

0 100 200 300 400 500 600 700

default

95and90

90and89

95and94

Page 40: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evic/on_dirty_triggerevicKon_dirty_trigger:triggerevic/onwhenthecacheisusingthismuchmemoryfordirtycontent,asapercentageofthetotalcachesize.Defaultvalue:95%Acceptablerange:Between5and99RunKme:db.adminCommand({setParameter:1,wiredTigerEngineRun/meConfig:"evic/on_dirty_trigger=71"})mongod.conf:evic/on_dirty_trigger=71WiredTiger.config:evic/on_dirty_trigger=71

Page 41: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evic/on_dirty_targetevicKon_dirty_target:con/nueevic/ngun/lthecachehaslessdirtypagesthanthis(asapercentage).Default:80%Acceptablerange:Between5and99(lowerthantrigger)RunKme:db.adminCommand({setParameter:1,wiredTigerEngineRun/meConfig:"evic/on_dirty_target=70"})mongod.conf:evic/on_dirty_target=70WiredTiger.config:evic/on_dirty_target=70

Page 42: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

dirty_trigger/targetBenchmarkDefault:trigger/target95/80Load:10minutesand58seconds20/5:trigger/target20/5Load:31minutesand20seconds80/70:trigger/target80/70Load:10minutesand06seconds

Page 43: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

dirty_trigger/target(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

default

20and5

80and70

Page 44: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

dirty_trigger/target(inttps)

0

200

400

600

800

1000

1200

1400

1600

0 100 200 300 400 500 600 700

default

20and5

80and70

Page 45: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evic/onthreadsevicKon.threads_min&evicKon.threads_max:theminimumandmaximumnumberofaddi/onalevic/onthreadsDefault:1and4Acceptablerange:between1and20RunKme:db.adminCommand({setParameter:1,wiredTigerEngineRun/meConfig:"evic/on=(threads_min=2)"})mongod.conf:evic/on=(threads_max=2)WiredTiger.config:evic/on=(threads_max=2)

Page 46: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evict_threads_min/maxBenchmarkDefault:min/max1/4Load:10minutesand58seconds4and6:min/max4/6Load:10minutesand31seconds2and8:min/max2/8Load:10minutesand11seconds4and4:min/max4/4Load:10minutesand21seconds

Page 47: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evict_threads_min/max(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

default

4and6

2and8

4and4

Page 48: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

evict_threads_min/max(inttps)

0

200

400

600

800

1000

1200

1400

1600

0 100 200 300 400 500 600 700

default

4and6

2and8

4and4

Page 49: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

direct_io

STORAGE STORAGE

FScacheWTcache WTcache FScache

RAM RAM

Page 50: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

direct_io•  minimizetheopera/ngsystemcacheeffectsofI/Otoand

fromWiredTiger'sbuffercache•  avoiddouble-bufferingofblocksinWiredTiger'scacheand

theopera/ngsystembuffercache•  avoidstallingunderlyingsolid-statedrivesbywri/ngalarge

numberofdirtyblocks.WiredTiger.config:direct_io=(data)mongod.conf:storage.wiredTiger.engineConfig.configString:direct_io=(data)

Page 51: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

DirectIOBenchmark

Default:WithoutDirectIOLoad:10minutesand58secondsDirectIO:WithDirectIOLoad:11minutesand25seconds

Page 52: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

DirectIO(cumtps)

0

200

400

600

800

1000

1200

0 100 200 300 400 500 600 700

default

directIO

Page 53: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

DirectIO(inttps)

0

200

400

600

800

1000

1200

1400

1600

0 100 200 300 400 500 600 700

default

directIO

Page 54: Antonios Giannopoulos Percona 2016 WiredTiger Configuration Variables

Ques/ons?

Thankyou!!!

[email protected]#iamantonios