微博上kevin_prajna提了一个问题:“求Linux下一打包工具,需求:能把两个10G的文件打包成一个文件,时间在1分钟之内能接受!”。

暂且作答一下吧。首先问题是求解工具,那么我们忽略IO问题,采用内存盘来解决, 在公司一台128G内存的机器上:

mkdir /mnt/test
mount -t ramfs none /mnt/test
cd /mnt/test
生成一个小脚本,生成两个10G的文件: #!/bin/bash
for (( i = ; i < ; i++)); do
echo $i
dd if=/dev/zero of=file$i.bin bs=1M count=
done;
生成测试文件: time ./test.sh <<< + records in
+ records out
bytes ( GB) copied, 4.78903 s, 2.2 GB/s + records in
+ records out
bytes ( GB) copied, 4.92947 s, 2.1 GB/s
./test.sh .00s user .68s system % cpu 9.731 total
测试结果,生成两个10G文件,消耗了9.731秒 采用tar打包工具测试: time tar cvf out.bin file* <<<
file0.bin
file1.bin
tar cvf out.bin file* .40s user .90s system % cpu 14.353 total
采用 tar打包这两个文件,并且写入 out.bin文件,消耗了 .353秒, 完全满足kevin_prajna的要求。 然后我们用cpio来测试,由于cpio对10G这样的文件打包有bug,会报错,所以我们用20个1G文件测试: #!/bin/bash
for (( i = ; i < ; i++)); do
echo $i
dd if=/dev/zero of=file$i.bin bs=1M count=
done;
生成20个1G测试文件,用了 .806秒 使用tar对这20个1G文件打包,用了13. 秒 cpio的测试结果: # time ls file*|cpio -o > out.bin <<<
blocks
ls --color=tty file* .00s user .00s system % cpu 0.002 total
cpio -o > out.bin .31s user .61s system % cpu 44.029 total
cpio打包这20个1G文件消耗了44.029秒,速度相对tar,还是慢了好多。 测试环境: Dell R710, *Xeon E5620, 128G RAM
OS: Ubuntu 12.04 x86_64 从上面也可以看出,现在CPU和工具是很强悍的,弱爆的是磁盘IO,这是要大把花银子的。

【转】打包2个10g文件 测试的更多相关文章

  1. webpack打包多个入口文件

    打包后的目录结构: webpack.config.js // path 模块提供了一些用于处理文件路径 const path = require('path'); // fs模块用于对系统文件及目录进 ...

  2. java将文件打包成ZIP压缩文件的工具类实例

    package com.lanp; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  3. Java中基本的打包jar和war文件(包括eclipse打包操作)

    前言: 为什么要打jar包? 1.举个例子,当编写一个工具类库,里面有十几个类,每个类对应一个class文件时,为了方便别人调用,是不是要装在一个文件中,方便传递和引用. 2.打jar包还有一个好处, ...

  4. IDEA将项目打包为指定class文件的jar

    转自:https://blog.csdn.net/makang456/article/details/86699375 [背景]     公司最近要和某大公司合作,将本公司的产品提供给其它公司单独部署 ...

  5. 实用程序包utils - 基于Rollup打包输出各模块文件(二)

    上一次,我们讲到了如何去搭建一个前端工具库的工程,那么今天我们来聊一聊如何去将其打包输出. 需求 事情是这个样子的.我有一个这样的需求,或者是我发现有这么一个需求.就是有时候吧,我也不想搞的那么复杂, ...

  6. 如何将Debug文件夹下的资源打包成一个EXE文件直接执行

    前言:前段时间写了个小程序,想分享给好友看看,可所以资源都放在Debug文件夹下,整个文件夹发给人家这也太……,为了显得稍微专业一点,想把它们打包一个EXE文件执行,因为我见到到这样的程序,直接一个E ...

  7. 使用webpack打包ThinkPHP的资源文件

    使用webpack打包ThinkPHP的资源文件 利用自己的空余时间一直在维护http://www.wx2share.com这个小网站,全是一个人在弄,由于只租得起虚拟空间,所以后台采用了简单方便的T ...

  8. Linux Shell 04 数字/字符串/文件测试

    一. 数字测试 格式:n1  -op  n2 测试操作op: eq/ne/le/ge/lt/gt    -->    等于/不等于/小于等于/大于等于/小于/大于 1. 数字比较可以使用特殊的( ...

  9. [shell基础]——整数比较;字符串比较;文件测试;逻辑测试符

    整数比较方法一:[  ] 或 [[  ]]   (1) 此方法需要使用整数比较运算符.[标注:equal 等于   greater 大于   less-then 小于] (2) 使用时一定要注意前后一 ...

随机推荐

  1. Jquery实现form表单提交后局部刷新页面的多种方法

    最近做一个小项目,刚好需要用到搜索功能,实现搜索框内输入数据然后按回车或者点击“提交”,然后给后台数据库处理并返回数据给前端,在前端局部更新数据. 但是遇到了一个小问题,就是form表单下任意输入框输 ...

  2. Django基础必备三神装(HttpResponse、render,、redirect)

    在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect 1.HttpResponse 它是 ...

  3. Bash:常用命令工具-tr命令

    tr命令可以用来做简单的字符替换与删除,常用的有-d, -s选项.它的替换与删除是按单个字符来的 假设有以下文本: Read from the file words.txt and output th ...

  4. 0<Double.MIN_VALUE

    好吧, 吐嘈一下: 前几天写代码时发现 Double 有几个静态成员变量, 如 MAX_VALUE , MIN_VALUE 等, 当时就自己"故名思意"了, 分别当成了 doubl ...

  5. 180217_JAVA学习_TreeSet中存放含多个String的类并设置排序规则

    有Person类如下: class Person { String name; int age; String address; } 有main如下: import java.util.TreeSet ...

  6. MYSQL 5.7 sqlmode 行为

    最近碰到了sql_mode 的一些问题,故进行了研究,根据实际情况研究其行为. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ER ...

  7. 《SQL Server 2008从入门到精通》--20180703

    SELECT操作多表数据 关于连接的问题,在<SQL必知必会>学习笔记中已经讲到过,但是没有掌握完全,所以再学一下. JOIN连接 首先我们先来看一下最简单的连接.Products表和Ve ...

  8. eclipse导入spring aop xml约束

    步骤: 1. 2. 3. 4.取  Location:中最后一个命名:spring-aop-4.2.xsd,放到Key的最后面,Key type:选择 Schema location.点击OK 5.编 ...

  9. UITextField使用的一些细节

    UITextField使用的一些细节 这篇博文是我自己使用UITextField的一些总结,并没有太多营养,并会持续更新. 2014.9.15 ---------------------------- ...

  10. Exchange & Office 365最小混合部署

    前言 这篇文章的主题是混合部署~ 混合使得本地组织和云环境像一个单一的.协作紧密的组织一样运作.当组织决定进行混合部署,达到本地Exchange Server和Office 365共存的状态时,就会面 ...