Slow Streaming Writes
Total Page:16
File Type:pdf, Size:1020Kb
Slow streaming writes Get RPC Allocate blocks Commit journal Write data transaction to disk Send RPC reply Sun Confidential: Internal Only 1 Slow streaming writes (cont'd) 2-4x performance improvement Get RPC Allocate blocks Write data Commit journal Send RPC reply transaction to disk Bug 16919 Sun Confidential: Internal Only 2 Lock callback timeouts Sun Confidential: Internal Only 3 Lock callback timeouts cont'd Sun Confidential: Internal Only 4 Lock callback timeouts • Two request queues > pre-process handler decides which queue to use and links request to export > Cancel can requeue requests > callback timeout handler can iterate through export requests and see if there is anything. • On client > Ability to send extra RPC if all current slots are busy > Sorting OAPs in priority based on lock cancellation status Sun Confidential: Internal Only 5 Create performance SHARED Baseline mkdir SHARED Reduced RPCs mkdir UNIQ Baseline mkdir UNIQ Reduced RPCs mkdir UNIQ Reduced RPCs and fast SHARED Baseline create SHARED Create with no objects UNIQ Baseline create journal mkdir UNIQ Create with no objects UNIQ Create with fast journal UNIQ Create with no objects, fast journal 20000 18000 16000 14000 c e s 12000 / s e 10000 t a e 8000 r C 6000 4000 2000 0 1 2 4 8 16 32 64 Sun Confidential: Internal Only 6 Sun Confidential: Internal Only 7 Sun Confidential: Internal Only 8 Jaguar PF create performance 16000 15000 14000 13000 12000 11000 10000 c e 9000 s / 8000 s p 7000 o 6000 5000 UNIQ Baseline create 4000 UNIQ Create with no objects 3000 UNIQ mkdir 2000 SHARED Baseline create 1000 SHARED mkdir 0 1 2 4 8 16 32 64 Clients Sun Confidential: Internal Only 9 CPU bound, now what? • Oprofile > (hw counters based, if possible) > Collect callgraph! (important to better understand the heavy paths) Sun Confidential: Internal Only 10 A little bit on client cache • Client cache currently is very limited > 32M per OSC by default > Should not be this limited > /proc/fs/lustre/osc/*/max_dirty_mb > Current possible max is ¼ of system RAM • Possible downsides > Interference with application-originated latency-critical RPC traffic > Only works when there is enough free RAM. (if there is not, just use O_DIRECT io anyway). Sun Confidential: Internal Only 11.