I. Introduction
Today's various graph applications demand better memory performance at different graph scales [18], [32], [36], [39], [40]. In the past, most graph applications can be processed by a single-node system given the relatively small size of the graph in existing in-memory graph frameworks [29], [39], [40]. Distributed graph frameworks are required only for very large-scale data analytic problems due to the communication overhead [24], [35], [41]. Nevertheless, as shown in Figure 1-(a), many graph frameworks mainly focus on medium-sized graphs (from 1GB to several hundreds of GB) [17], [36], [42]. Although current out-of-core graph computing frameworks could handle medium-sized graphs with external storage, they suffer performance degradation due to the I/O bottleneck.