# FirepanIF: High Performance Host-Side Flash Cache Warm-Up Method in Cloud Computing
## 4 Evaluation
### Neighborhood Effect
#### 4.3.1 Performance Model for Neighborhood Effect  
At first, we provide a performance model that represents each VM's I/O performance related to the number of co-running VMs. In the cloud system, VMs share the following resources that influence the I/O performance: a flash cache, shared storage, and network. These resources are fairly allocated to the VMs in general cloud systems. In addition, there is another important consideration about I/O performance when VMs share the flash-based storage: partitioning. Usually, each VM is allocated limited space of the storage device with a limited partition. Because an SSD cannot maximize the internal parallelism among multiple flash-chips with the limited partition, each VM receives restricted performance from the allocated space. For example, we allocate 50 GB space of the 480 GB shared storage and 10 GB of the 512 GB flash cache for each VM. A 10 GB partition of the SSD cannot provide the same level of performance that the entire 512 GB SSD can provide. Therefore, the first reason that limits the I/O performance of each VM is not sharing of the storage with other VMs, but partitioning of the storage. In other words, the performance of each VM is isolated from the neighbor VM by its partition. Equation (1) presents the storage performance in IOPS that can be provided for the \(k\)th VM, \(VM_{i}^{k}\), on the \(i\)th node based on the above explanation. \(S_{i}^{k}\) is the maximum performance of the shared storage partition that is allocated for \(VM^{k}\) on the \(i\)th node. \(F_{i}^{k}\) is the maximum performance of the flash cache partition, and \(H_{i}^{k}\) is a hit ratio for the cache of \(VM^{k}\) on the \(i\)th node. \[IOPS_{i}^{k}=H_{i}^{k}F_{i}^{k}+(1-H_{i}^{k})S_{i}^{k} \tag{1}\]  
Equation (2) revises Equation (1) taking into consideration of sharing of the storage and the cache with other VMs. When the overall performance provided by all the partitions exceeds the maximum performance of the device, the storage performance will be throttled down. \(S\) and \(F_{i}\) are the maximum performance provided by the shared storage system and the flash cache on the \(i\)th node. \(E_{i}\) is the \begin{table}
\begin{tabular}{c c c c c} \hline  &
\begin{tabular}{c} **NoCache** \\ **Migration** \\ **(Baseline)** \\ \end{tabular} & **Cachemior** & **Firepan** & **FirepanIF** \\ \hline
2000s & 41.89 & 45.25 (+8.02\%) & 43.11 (+2.93\%) & 48.67 (+16.18\%) \\ \hline
2100s & 49.58 & 51.16 (+3.19\%) & 61.69 (+24.44\%) & 61.88 (+24.82\%) \\ \hline
2200s & 53.48 & 55.90 (+4.53\%) & 60.13 (+12.44\%) & 62.18 (+16.26\%) \\ \hline
2300s & 55.88 & 58.46 (+4.62\%) & 62.98 (+12.71\%) & 61.59 (+10.22\%) \\ \hline avg. (first 400 s) & 50.21 & 52.69 (+4.94\%) & 56.98 (+13.49\%) & 58.58 (+16.68\%) \\ \hline
2400s & 56.09 & 62.21 (+10.91\%) & 61.23 (+9.17\%) & 60.72 (+8.26\%) \\ \hline
2500s & 57.28 & 61.66 (+7.65\%) & 61.04 (+6.57\%) & 60.42 (+5.48\%) \\ \hline
2600s & 56.99 & 63.26 (+11.00\%) & 62.36 (+9.41\%) & 61.39 (+7.73\%) \\ \hline
2700s & 58.57 & 61.91 (+5.70\%) & 59.89 (+2.25\%) & 64.47 (+10.07\%) \\ \hline avg. (total 800 s) & 53.72 & 57.48 (+7.00\%) & 59.05 (+9.93\%) & 60.16 (+12.00\%) \\ \hline \end{tabular}
\end{table} 
Table 1: Average bandwidth between 400 and 800 s after VM migration. number of VMs running on the \(i\)th node, and the total number of host nodes is \(n\). We assume that every VM fairly shares the total bandwidth of the shared storage system and the flash cache. \[IOPS_{i}^{k}=\max\left\{\frac{F_{i}}{E_{i}},H_{i}^{k}F_{i}^{k}\right\}+\max\left\{ \frac{S}{\sum\limits_{i=0}^{n}E_{i}},(1-H_{i}^{k})S_{i}^{k}\right\} \tag{2}\]  
The last factor is the network bandwidth, which can throttle the storage performance. Equation (3) represents the complete performance model for \(VM_{i}^{k}\), where \(N_{i}\) is the maximum network bandwidth between the \(i\)th node and the shared storage system, and \(B_{i}\) is the average size of I/O requests in bytes from the \(i\)th node.