Linux 压缩方式测试
测试方法
- 使用 python 的 Faker 第三方包伪造数据,写入文件 test.txt
- 复制 test.txt 内容为 test2.txt ,将 test2.txt 的内容重定向到 test.txt 中,使 test.txt 的文件大小达到几G
- 使用lzo lz4 zstd snappy四种方式对test.txt文件进行压缩,比较压缩时间和压缩率
- )压缩率 = 压缩后大小/压缩前大小
测试结果1
测试时间:20181106
由于机器环境限制,test.txt 的大小为3.7G,具体为 3918598144。
| 压缩方式 | 压缩时长 | 压缩后大小 | 压缩率 |
|---|---|---|---|
| lzo | 19s-21.8s | 2067143270/2.0G | 52.75% |
| lz4 | 17.2s | 2060209418/2.0G | 52.57% |
| zstd | 49.4s | 1227117514/1.2G | 31.32% |
| snappy | 17s | 936100017/0.87G | 52.7% |
说明:
snappy没有命令行测试方法,使用hadoop安装snappy进行测试时,目前无法安装。。。
使用java程序对snappy压缩方法进行测试
1) 由于文件过大,jar包运行时即使设置了最大运行内存,也会出现OOM错误,snappy所测试的文件大小调整为1.7G,具体为 1776111485
2)此程序使用的是snappy-java 的jar包
测试结果2
测试时间:20181107
由于第一次的测试文件大小较小,这次对100G的文件进行压缩测试。
已请运维人员对dev02进行200G硬盘挂载。
增加压缩速度和解压的相关记录。
压缩速度 = 压缩前大小 / (real - user - sys) 压缩时长
数据损失率 = ( 压缩前大小 - 解压后大小 ) / 压缩前大小
解压速度 = 解压后大小 / (real - user - sys) 解压时长
test.txt 的大小为 107G,具体为 114599669632
| 压缩方式 | 压缩时长 | 压缩后大小 | 压缩率 | 压缩速度 |
|---|---|---|---|---|
| lzo | real 26m6.676s user 8m42.716s sys 1m25.524s |
60451038045/57G | 52.75% | 114.03 M/s |
| lz4 | real 25m42.393s user 7m16.460s sys 1m23.592s |
60249247392/57G | 52.57% | 106.90 M/s |
| zstd | real 42m46.340s user 23m37.792s sys 1m11.096s |
35886186839/34G | 31.31% | 101.43 M/s |
| 解压方式 | 解压时长 | 解压后大小 | 数据损失率 | 解压速度 |
|---|---|---|---|---|
| lzo | real 25m10.172s user 6m49.908s sys 1m30.888s |
114599669632 | 0% | 102.2 M/s |
| lz4 | real 28m54.584s user 2m2.332s sys 1m42.312s |
114599669632 | 0% | 72.39 M/s |
| zstd | real 26m47.456s user 5m16.156s sys 1m31.908s |
114599669632 | 0% | 91.12 M/s |
说明:
- 以上测试过程中对内存无任何影响,CPU使用率提升30%左右
测试结果3
测试时间:20181108
主要以以下新要求进行测试:
- 数据文件的生成过程有可能对压缩有影响
- )本次测试文件的内容不要出现一大块的重复数据
- 文件内每条数据内至少10个key
- )调整数据生成过程
- 调整计算公式
- )压缩速度 = 压缩前大小 / real 压缩时长
- )解压速度 = 解压后大小 / real 解压时长
- 没有CPU的具体监控数据
- )在表内增加CPU的具体监控数据,主要对某个CPU进行数据采集
- )记录方式为 xx%~xx%
说明:
- 文件大小为 2.1G,具体是 2175836454
- CPU基础值为22%~23%
- snappy使用程序进行监控,记录时长为程序内记录的时长
| 压缩方式 | 压缩时长 | 压缩后大小 | 压缩率 | 压缩速度 | CPU使用率 |
|---|---|---|---|---|---|
| lzo | real 0m12.810s user 0m9.544s sys 0m2.316s |
1147353171 / 1.1G | 52.73% | 162 M/s | 占用4%~25% |
| lz4 | real 0m14.205s user 0m8.072s sys 0m2.792s |
1143524488 / 1.1G | 52.56% | 146.08 M/s | 占用6%~20% |
| zstd | real 0m41.900s user 0m28.872s sys 0m3.248s |
681113354 / 650M | 31.30% | 49.52 M/s | 占用11%~25% |
| snappy | 18.712 s | 1146400478 / 1.1G | 52.7% | 92.9 M/s | 占用4%~22% |
| 解压方式 | 解压时长 | 解压后大小 | 数据损失率 | 解压速度 | CPU使用率 |
|---|---|---|---|---|---|
| lzo | real 0m25.260s user 0m7.428s sys 0m5.472s |
2175836454 | 0% | 82.147 M/s | 占用3%~12% |
| lz4 | real 0m6.931s user 0m2.360s sys 0m1.884s |
2175836454 | 0% | 299.4 M/s | 占用6%~9% |
| zstd | real 0m21.659s user 0m6.080s sys 0m2.808s |
2175836454 | 0% | 95.8 M/s | 占用8%~13% |
| snappy | 3.856s | 2175836454 | 0% | 538.05 M/s | 占用6%~12% |
Linux 压缩方式测试的更多相关文章
- Linux下几种常见压缩方式测试对比
目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比
- Linux —— 压缩文件
Linux——压缩文件 为什么需要压缩文件? 文件在传输过程中,可能由于文件过大,传输所需时间过多.减少文件大小有两个明显的好处,一是可以减 少存储空间,二是通过网络传输文件时,可以减少传 ...
- Linux压缩那些事儿
tar简介 Linux的压缩命令的源文件只能有一个,这意味在压缩之前不得不先将要压缩的所有文件打包成一个包,然后再压缩包,这样来完成对多个文件的压缩.所以在了解解压缩之前就必须先了解打包命令. Lin ...
- Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持
Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺 ...
- Kali Linux Web 渗透测试视频教程— 第十三课-密码破解
Kali Linux Web 渗透测试— 第十三课-密码破解 文/玄魂 目录 Kali Linux Web 渗透测试— 第十三课-密码破解............................... ...
- Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过
Kali Linux Web 渗透测试视频教程—第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...
- linux 压缩文件的命令总结
Linux压缩文件的读取 *.Z compress 程序压缩的档案: *.bz2 bzip2 程序压缩的档案: *.gz gzip 程序压缩的档案: *.tar ...
- linux使用FIO测试磁盘的iops 【转载】
linux使用FIO测试磁盘的iops 2013-09-23 10:59:21 分类: LINUX FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括 ...
- linux压缩及vi操作
一:Linux的压缩方式 1.tar cvf 对文件进行压缩,tar cvf+压缩文件完成的命名+需要压缩的文件 2,tar -tf +命名的压缩文件:表示查看目录里面的内容 3,tar -xf 解压 ...
随机推荐
- PHP 补零操作
str_pad(string,length,pad_string,pad_type)//参数 描述string //必需.规定要填充的字符串.length //必需.规定新的字符串长度.如果该值小于字 ...
- 使用.NET Core创建Windows服务(一) - 使用官方推荐方式
原文:使用.NET Core创建Windows服务(一) - 使用官方推荐方式 原文:Creating Windows Services In .NET Core – Part 1 – The &qu ...
- jQuery选择器引入
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Java中的Switch....case语句:
一.格式: switch(表达式){ case 常量表达式1: 语句1; case 常量表达式2: 语句2; … case 常量表达式n: 语句n; default: ...
- 企业QQ在线咨询接入
普通QQ在线咨询接入 http://wpa.qq.com/msgrd?v=3&uin=4009603616&site=qq&menu=yes; 企业QQ在线咨询接入 ...
- ThinkPHP5框架缺陷导致远程命令执行(POC整合帖)
摘要 近日thinkphp团队发布了版本更新https://blog.thinkphp.cn/869075 ,其中修复了一处getshell漏洞. 影响范围 5.x < 5.1.31<= ...
- 查询服务商的当月提审限额和加急次数(Quota) 调用遇到问题的来说说是什么情况{"errcode":-1,"errmsg":"system error hint: [_KbPJA05231543]"}
感觉完全是按照微信官方的要求来的,还是提示错误.大家有遇到吗?在微信开发者社区里搜索相关问题,也是有人遇到这样的错误. 还是根据社区里说的,换过用开放平台的component accesstoken ...
- python连接activemq
介绍 activeMQ是一款消息队列,关于消息队列是什么这里就不再介绍了,这里只介绍如何使用python去连接activemq进行消息的发送和接收.既然都用python去连接了,那么对于消息队列是什么 ...
- Linux下查看Nginx,tomcat等的并发连接数和连接状态
1.查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print ...
- orm中的聚合函数,分组,F/Q查询,字段类,事务
目录 一.聚合函数 1. 基础语法 2. Max Min Sum Avg Count用法 (1) Max()/Min() (2)Avg() (3)Count() (4)聚合函数联用 二.分组查询 1. ...