Characterizing and improving graph algorithm performance on multicore systems