Financial

1,iolog的文件格式

root@demo-1:~/flash_seq# cat iolog |head
fio version 2 iolog
/dev/mapper/cachedev add
/dev/mapper/cachedev open
/dev/mapper/cachedev read 0 4096
/dev/mapper/cachedev read 4096 4096
/dev/mapper/cachedev read 8192 4096
/dev/mapper/cachedev read 12288 4096
/dev/mapper/cachedev read 16384 4096
/dev/mapper/cachedev read 20480 4096
/dev/mapper/cachedev read 24576 4096
root@demo-1:~/flash_seq# cat iolog |tail
/dev/mapper/cachedev read 39075840 4096
/dev/mapper/cachedev read 39079936 4096
/dev/mapper/cachedev read 39084032 4096
/dev/mapper/cachedev read 39088128 4096
/dev/mapper/cachedev read 39092224 4096
/dev/mapper/cachedev read 39096320 4096
/dev/mapper/cachedev read 39100416 4096
/dev/mapper/cachedev read 39104512 4096
/dev/mapper/cachedev read 39108608 4096

2,Financial文件格式

root@demo-1:~/flash_seq# cat Financial|head
0,303567,3584,w,0.000000
1,55590,3072,w,0.000000
0,303574,3584,w,0.026214
1,240840,3072,w,0.026214
1,55596,3072,r,0.078643
0,303581,3584,w,0.117964
1,55596,3072,w,0.117964
0,303588,3584,w,0.530841
1,55596,3072,w,0.530841
0,303595,3584,w,0.550502
$1 Application specific unit (ASU) 设备号
$2 Logical block address (LBA) 逻辑块地址
$3 Size 请求的数据长度
$4 Opcode 读请求或者写请求,WebSearch中只有读请求,Financial
$5 Timestamp 请求下达的时间戳

3,解析

统计第一列的磁盘阵列情况

 awk 'BEGIN{FS=","};{print $1}' Financial1| sort |uniq -c|head
 153566 0
 435222 1
 779517 10

设备请求最大逻辑块统计

root@demo-1:~/flash_seq# awk 'BEGIN{FS=",";max=0};{if($1==0&&$2>max){max=$2}};END{print max}' Financial1
500363

root@demo-1:~/flash_seq# awk 'BEGIN{FS=",";max=0};{if($1==1&&$2>max){max=$2}};END{print max}' Financial1
1351642016

由此可以推断出:
我们至少需要1351642016×512B的磁盘空间才能满足trace的需求。因为一个扇区512B,换算下来:需要空间就是1351642016/2 (KB)
也就是说给出的地址其实是逻辑扇区地址,而不是真正的物理地址。

请求块大小:

root@demo-1:~/flash_seq# awk 'BEGIN{FS=","};{print $3}' Financial1| sort |uniq -c| head
     38 0
 679197 1024
   9078 10240
      1 102912
   1467 10752

根据SPC文档的规范,size的单位是byte,例如:65536byte为64k。这样也就说通了。

运行时间:

root@demo-1:~/flash_seq# awk 'BEGIN{FS=",";max=0};{if($5>max){max=$5}};END{print max}' Financial1
43712.242187

或者直接 tail 就行

根据SPC文档的规范,时间的单位为s,可以看到实际上只是系统运行了12小时的纪录。

提取指定列

awk 'BEGIN{FS=","};{print $2, $3, $4 }' Financial1 >>Financial02
396047 3584 w
753921 3072 w
753921 3072 w
68566 3072 w
60382 2560 w

更改指定列

root@demo-1:~/flash_seq# awk 'BEGIN{FS=" "};{if($3~/r/) {$3="read"} else {$3="write"} print  }' Financial02 |tail
94970 2048 read
129870 2560 write
145658 2048 write


awk 'BEGIN{FS=" "};{if($3~/r/) {$3="read"} else {$3="write"} print  }' Financial02 >>Financial03

格式规划

awk 'BEGIN{FS=" "};{ {$4="/dev/mapper/cachedev"}  print $4,$3,$1,$2 }' Financial03 |head
/dev/mapper/cachedev write 303567 3584
/dev/mapper/cachedev write 55590 3072
/dev/mapper/cachedev write 303574 3584
/dev/mapper/cachedev write 240840 3072
/dev/mapper/cachedev read 55596 3072
/dev/mapper/cachedev write 303581 3584
/dev/mapper/cachedev write 55596 3072
/dev/mapper/cachedev write 303588 3584
/dev/mapper/cachedev write 55596 3072
/dev/mapper/cachedev write 303595 3584

awk 'BEGIN{FS=" "};{ {$4="/dev/mapper/cachedev"}  print $4,$3,$1,$2 }' Financial03 >>Financial04

添加行首和行尾

awk 'BEGIN{FS=" "};{if(NR==1) {$1="fio";$2="version";$3="2";$4="iolog"} print  }' Financial04 |head

awk 'BEGIN{FS=" "};{if(NR==2) {$2="add";$3="";$4=""} print  }' Financial04 |head

awk 'BEGIN{FS=" "};{if(NR==3) {$2="open";$3="";$4=""} print  }' Financial04 |head

root@demo-1:~/flash_seq# cat Financial04 |wc -l 
5334987

root@demo-1:~/flash_seq# awk 'BEGIN{FS=" "};{if(NR==5334987) {$2="close";$3="";$4=""} print  }' Financial04 |tail

结束

修改下面的sql,所有查询el_requirement_apply和el_comp_info表的语句增加del_flag = '0' 的筛选条件,完整的sql如下: SELECT gen_random_uuid() AS id, ( SELECT el_financial_institution.fi_full_name FROM el_financial_institution WHERE (((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND ((el_financial_institution.parent_id)::text = '-1'::text))) AS financeorgfullname, efi.fi_code AS code, COALESCE(( SELECT count(1) AS count FROM el_granting_credit, el_financial_institution WHERE (((el_granting_credit.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::bigint) AS creditenterprisenum, COALESCE(( SELECT count(DISTINCT el_requirement_info.unisc_id) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::bigint) AS loanenterprisenum, COALESCE(( SELECT count(DISTINCT el_requirement_info.unisc_id) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::bigint) AS loanmicroenterprisenum, COALESCE(( SELECT sum(el_granting_credit.granting_amount) AS sum FROM el_granting_credit, el_financial_institution WHERE (((el_granting_credit.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::numeric) AS creditamount, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::numeric) AS loanamount, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::numeric) AS inclusivemicroenterpriseloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::bigint) AS loannum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric))), (0)::numeric) AS creditloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric))), (0)::bigint) AS creditloannum, COALESCE(( SELECT sum(el_requirement_info.amount) AS sum FROM el_requirement_info, el_requirement_apply, el_financial_institution WHERE (((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_financial_institution.id)::text = (el_requirement_apply.institution_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::numeric) AS financingneedsamount, COALESCE(( SELECT count(1) AS count FROM el_requirement_info, el_financial_institution, el_requirement_apply WHERE (((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND ((el_financial_institution.id)::text = (el_requirement_apply.institution_id)::text))), (0)::bigint) AS financingneedsnum, COALESCE(( SELECT trunc(avg(to_number((el_loan_grant.loan_rate)::text, '0.00'::text)), 2) AS trunc FROM el_loan_grant, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text))), (0)::numeric) AS averagelendingrate, COALESCE(( SELECT count(1) AS count FROM el_user_info rr, el_financial_institution tt WHERE (((rr.id)::text = (tt.user_id)::text) AND ((rr.user_type)::text = 'FI'::text) AND ((tt.fi_code)::text = (efi.fi_code)::text) AND ((tt.parent_id)::text <> '-1'::text))), (0)::bigint) AS settledinfinancialinstitutionnum, COALESCE(( SELECT count(1) AS count FROM el_financial_product, el_financial_institution WHERE ((el_financial_product.audit_state = '1'::numeric) AND ((el_financial_product.delflag)::text = '0'::text) AND (((el_financial_product.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text)))), (0)::bigint) AS financialproductsnum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::numeric) AS monthloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::bigint) AS monthloannum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::numeric) AS monthcreditloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::bigint) AS monthcreditloannum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_financial_institution WHERE (((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::numeric) AS monthinclusivemicroenterpriseloanamount, COALESCE(( SELECT sum(el_requirement_info.amount) AS sum FROM el_requirement_info, el_requirement_apply, el_financial_institution WHERE (((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_requirement_apply.institution_id)::text = (el_financial_institution.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (to_char(el_requirement_info.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::numeric) AS monthfinancingneedsamount, COALESCE(( SELECT count(1) AS count FROM el_requirement_info, el_requirement_apply, el_financial_institution WHERE (((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_requirement_apply.institution_id)::text = (el_financial_institution.id)::text) AND ((el_financial_institution.fi_code)::text = (efi.fi_code)::text) AND (to_char(el_requirement_info.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::bigint) AS monthfinancingneedsnum, '2023-06-20 08:00:00'::text AS statisticsbegintime, now() AS statisticsendtime FROM el_financial_institution efi GROUP BY efi.fi_code
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值