| http://home.ustc.edu.cn/~shil0704/conf/PDF_EMSOFT_11_1.pdf motivation : lack of page-level access information in the block based WBC ---------------------- 點出 以block-level為 LRU排序的單位 的壞處。 (a) Slow retirement of large cold blocks 只因少數page更新,而讓整個blk(連同cold pages)都搬到MRU去 (b) Early eviction of small hot blocks ex. 假設 block A有31個pages ,每個page都只被update 1 次 block B有3 個pages ,每個page都被update 10 次 誰該留在buffer中久一點?? 應該要是 B -----------solution----- add page-level access information (VPN, Data, Hit_count, Request_number) 自己推出一套計算權重的方法來決定 eviction order |
2011年7月31日 星期日
EXlru
2011年7月18日 星期一
temp
Understanding Performance Interference of I/O Workload in Virtualized Cloud Environments
Easy and Efficient Disk I/O Workload Characterization in VMware
http://blogs.oracle.com/henk/entry/swat_a_disk_and_tape swat workload analyzer
Libtrace: A Trace Capture and Processing Library
Easy and Efficient Disk I/O Workload Characterization in VMware
http://blogs.oracle.com/henk/entry/swat_a_disk_and_tape swat workload analyzer
Libtrace: A Trace Capture and Processing Library
2011年7月16日 星期六
指標...
1. int *a[10]
2. int (*a)[10]
自己理出的規則如下:
array前面是array的名子
int *a[10] ,a是array的名子,然後這個array放的是 int *
int (*a)[10],(*a)是array的名子,然後array裡面放的是 int
2. int (*a)[10]
自己理出的規則如下:
array前面是array的名子
int *a[10] ,a是array的名子,然後這個array放的是 int *
int (*a)[10],(*a)是array的名子,然後array裡面放的是 int
2011年7月11日 星期一
disksim SSD容量 與 "Max Addressable LBA in SSD Trace File"
SSD容量的算法,如下:
---
Pages Per Block = 64 Blocks Per Plane = 2048 Planes Per Element = 8 Page Size = 8 sectors = 4 KB
----
Pages Per Single Element
= 1 (Element) * 8 (planes) * 2048 (Blocks) *64 (Pages) = 1048576 Pages
那,trace裡面的 Block number 最大可以定址到多少?
先換算成sector(file system block)
1048576* 8 = 8388608
the MAX Addressable Sector = 0 .. 8388607 Sectors
disksim 中 "I/O trace time scale" 參數
disksim在parv檔提供這個參數,讓user可以調整trace的特徵(如 arrival time, request size, location etc.)
但是網友發現 在disksim source中根本就把 IO trace time scale寫死,程式碼如下:
在 disksim/src/disksim_iosim.c下:
但是網友發現 在disksim source中根本就把 IO trace time scale寫死,程式碼如下:
在 disksim/src/disksim_iosim.c下:
void iosim_initialize_iosim_info ()
{
disksim->iosim_info = DISKSIM_malloc (sizeof(iosim_info_t));
bzero ((char *)disksim->iosim_info, sizeof(iosim_info_t));
/* initializations that get remapped into iosim_info */
ioscale = 1.0; /**************LOOK HERE************/
last_request_arrive = 0.0;
constintarrtime = 0.0;
}
也就是說,想改變request的arrival time,只能在上面code中改。
原文:https://sos.ece.cmu.edu/pipermail/disksim-users/2007-August/000184.html
2011年7月7日 星期四
C語言 練習 bit 操作
/*C不像verilog可以對指定位元做操作,所以都用mask的方式
*/
#include<stdio.h>
#include <stdbool.h>
#define if_power_of_2(n) (n != 0 && ((n & (n -1)) == 0))
int main()
{
int x,i;
x=(7&6);
int bit=1;
bit=bit<<7; //這樣才能從左印到右
for(i=0;i<8;i++)
{
if((bit&x)==0) // 要刮號,因為 == priority 大於 &
{
printf("0");
bit=bit>>1;
}
else
{printf("1");
bit=bit>>1;
}
}
printf("\n");
printf("if_power_of_2(7)=%d\n",if_power_of_2(7));
printf("if_power_of_2(4)=%d\n",if_power_of_2(4));
system("pause");
return 0;
}
*/
#include<stdio.h>
#include <stdbool.h>
#define if_power_of_2(n) (n != 0 && ((n & (n -1)) == 0))
int main()
{
int x,i;
x=(7&6);
int bit=1;
bit=bit<<7; //這樣才能從左印到右
for(i=0;i<8;i++)
{
if((bit&x)==0) // 要刮號,因為 == priority 大於 &
{
printf("0");
bit=bit>>1;
}
else
{printf("1");
bit=bit>>1;
}
}
printf("\n");
printf("if_power_of_2(7)=%d\n",if_power_of_2(7));
printf("if_power_of_2(4)=%d\n",if_power_of_2(4));
system("pause");
return 0;
}
訂閱:
文章 (Atom)