MySQL cycling between periods of high I/O and high lock contention
Point 1 : Locking Management 

You must check which processes are staying in locking state &amp; what you can do it for locking i.e creating index for faster retrieval ... 
You can check deadlock in show engine innodb status

Point 2: Redo Log Buffer &amp; Files 

Make sure the redo log buffer &amp; files are big enough to capture many transaction.

Point 3: Flusing Method

Set innodb_flush_method=O_DIRECT for speedup with write operation.

Still this is not enough, you need to check Innodb buffer pool,OS level parameters(iostat,vmstat...)