英语法语西班牙文

OnWorks 网站图标

pgbench - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 pgbench

这是命令 pgbench,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


pgbench - 在 PostgreSQL 上运行基准测试

概要


工作台 -i [选项...] [DBNAME]

工作台 [选项...] [DBNAME]

商品描述


pgbench 是一个简单的程序,用于在 PostgreSQL 上运行基准测试。 它运行相同
一遍又一遍的 SQL 命令序列,可能在多个并发数据库会话中,
然后计算平均事务率(每秒事务数)。 默认情况下,
pgbench 测试了一个松散基于 TPC-B 的场景,涉及五个 选择, 更新,
插入 每个事务的命令。 但是,很容易通过编写测试其他案例
您自己的交易脚本文件。

pgbench 的典型输出如下所示:

交易类型:TPC-B(有点)
比例因子:10
查询方式:简单
客户数量:10
线程数:1
每个客户的交易数量:1000
实际处理的交易数量:10000/10000
tps = 85.184871(包括连接建立)
tps = 85.296346(不包括连接建立)

前六行报告了一些最重要的参数设置。 下一行
报告已完成和预期的交易数量(后者只是
客户数量和每个客户交易数量的乘积); 这些将是平等的
除非运行在完成之前失败。 (在 -T 模式,仅实际数量
交易被打印出来。)最后两行报告每秒交易的数量,
计算和不计算启动数据库会话的时间。

默认的 TPC-B 类事务测试需要预先设置特定的表。
pgbench 应该用 -i (初始化)选项来创建和填充这些
表。 (当您测试自定义脚本时,您不需要这一步,而是需要
需要做任何测试需要的设置。)初始化看起来像:

pgbench -i [ 其他选项 ] DBNAME

哪里 DBNAME 是要在其中进行测试的已创建数据库的名称。(您可能还需要
-h, -p,和/或 -U 选项来指定如何连接到数据库服务器。)

注意:
pgbench -i 创建四个表 pgbench_accounts、pgbench_branches、pgbench_history、
和 pgbench_tellers,销毁这些名称的任何现有表。 要非常小心
如果您有具有这些名称的表,请使用另一个数据库!

在默认的“比例因子”为 1 时,表最初包含这么多行:

表格行数
---------------------------------
pgbench_branches 1
pgbench_出纳员 10
pgbench_accounts 100000
pgbench_历史 0

您可以(并且,对于大多数目的,可能应该)通过使用
-s (比例因子)选项。 这 -F (fillfactor) 选项此时也可以使用。

完成必要的设置后,您可以使用以下命令运行基准测试
不包括 -i, 那是

工作台 [ 选项 ] DBNAME

在几乎所有情况下,您都需要一些选项来进行有用的测试。 最重要的
选项是 -c (客户数量), -t (交易数量), -T (时间限制),和 -f
(指定自定义脚本文件)。 请参阅下面的完整列表。

配置


以下分为三个小节: 期间使用了不同的选项
数据库初始化和运行基准测试时,一些选项在两者中都很有用
案例。

初始化 可选项
pgbench 接受以下命令行初始化参数:

-i
- 初始化
需要调用初始化模式。

-F 填充因子
--填充因子=填充因子
创建 pgbench_accounts、pgbench_tellers 和 pgbench_branches 表
给定的填充因子。 默认值为 100。

-n
--无真空
初始化后不执行吸尘。

-q
- 安静的
将日志记录切换到安静模式,每 5 秒仅生成一条进度消息。 这
默认日志每 100000 行打印一条消息,通常会输出多行
每秒(尤其是在良好的硬件上)。

-s 比例因子
--比例=比例因子
乘以比例因子生成的行数。 例如, -s 100 将
在 pgbench_accounts 表中创建 10,000,000 行。 默认为 1。当比例为
20,000 或更大,用于保存帐户标识符的列(援助列)将
切换到使用更大的整数 (bigint),以便足够大以容纳范围
帐户标识符。

--外键
在标准表之间创建外键约束。

--索引表空间=索引表空间
在指定的表空间而不是默认表空间中创建索引。

--表空间=表空间
在指定的表空间而不是默认表空间中创建表。

--未记录的表
将所有表创建为未记录的表,而不是永久表。

标杆测试 可选项
pgbench 接受以下命令行基准测试参数:

-c 客户
--客户=客户
模拟的客户端数,即并发数据库会话数。 默认
是1。

-C
- 连接
为每个事务建立一个新的连接,而不是每次只做一次
客户端会话。 这对于测量连接开销很有用。

-d
-调试
打印调试输出。

-D 变量名=折扣值
--定义=变量名=折扣值
定义一个变量供自定义脚本使用(见下文)。 多种的 -D 选项是
不允许的。

-f 文件名
--文件=文件名
从中读取交易脚本 文件名. 详情请见下文。 -N, -S-f 旨在
互相排斥。

-j 线程
--工作=线程
pgbench 中的工作线程数。 使用多个线程可能会有所帮助
多CPU机器。 客户端的数量必须是线程数量的倍数,
因为每个线程都有相同数量的客户端会话来管理。 默认值为 1。

-l
- 日志
将每个事务所花费的时间写入日志文件。 详情请见下文。

-L 限制
--延迟限制=限制
交易持续时间超过 限制 计算和报告毫秒
分开,晚了。

使用节流时 (--率=...),比计划滞后更多的交易
限制 ms,因此没有希望达到延迟限制,不会发送到
服务器。 它们被单独计算和报告为跳过。

-M 查询模式
--协议=查询模式
用于向服务器提交查询的协议:

· 简单:使用简单的查询协议。

·extended:使用扩展查询协议。

· 准备:使用扩展查询协议和准备好的语句。

默认为简单查询协议。 (参见第 50 章,前端/后端协议,在
有关更多信息的文档。)

-n
--无真空
在运行测试之前不要进行吸尘。 这个选项是 必要 如果你是
运行不包含标准表的自定义测试场景
pgbench_accounts、pgbench_branches、pgbench_history 和 pgbench_tellers。

-N
--跳过一些更新
不要更新 pgbench_tellers 和 pgbench_branches。 这将避免更新争用
在这些表上,但它使测试用例更不像 TPC-B。

-P
--进度=
每秒显示一次进度报告。 该报告包括自
运行开始,自上次报告以来的 tps,以及事务延迟
自上次报告以来的平均值和标准偏差。 在节流 (-R),则
延迟是根据事务计划开始时间计算的,而不是
实际交易开始时间,因此它也包括平均进度滞后
时间。

-r
--报告延迟
报告每个语句的平均延迟(从执行时间的角度来看)
client) 基准测试完成后的每个命令。 详情请见下文。

-R
--率=
执行以指定速率为目标的事务,而不是尽可能快地运行
可能(默认)。 速率以每秒事务数表示。 如果目标
速率高于最大可能速率,速率限制不会影响结果。

该费率是通过沿着泊松分布的时间表启动事务来确定的
时间线。 预期的开始时间表根据客户的时间向前推进
第一次开始,而不是在前一个事务结束时。 这种方法意味着当
交易超过了原定的结束时间,以后的交易是可能的
再次赶上。

当节流处于活动状态时,运行结束时报告的事务延迟为
从预定的开始时间计算,所以它包括每个事务的时间
必须等待前一个交易完成。 等待时间称为
计划滞后时间,其平均值和最大值也分别报告。 这
相对于实际事务开始时间的事务延迟,即时间
在数据库中执行事务所花费的时间,可以通过减去
从报告的延迟中安排延迟时间。

If --延迟限制- 速度, 一个交易可以滞后这么多
当前一个事务结束时,它已经超过了延迟限制,因为
延迟是从计划的开始时间计算的。 此类交易不
发送到服务器,但完全跳过并单独计算。

高计划滞后时间表明系统无法处理事务
以指定的速率,使用选定数量的客户端和线程。 当平均
事务执行时间长于每个之间的预定间隔
事务,每个连续的事务将进一步落后,并且时间表
测试运行的时间越长,滞后时间就会不断增加。 当这种情况发生时,你会
必须降低指定的交易率。

-s 比例因子
--比例=比例因子
在 pgbench 的输出中报告指定的比例因子。 通过内置测试,这
没有必要; 将通过计算数量来检测正确的比例因子
pgbench_branches 表中的行。 但是,在测试自定义基准测试时 (-f
选项),除非使用此选项,否则比例因子将报告为 1。

-S
--仅选择
执行仅选择事务而不是 TPC-B 类测试。

-t 交易
--交易=交易
每个客户端运行的事务数。 默认值为 10。

-T
--时间=
运行测试这么多秒,而不是每个固定数量的事务
顾客。 -t-T 相互排斥。

-v
--全部真空
在运行测试之前对所有四个标准表进行抽真空。 都没有 -n 也不 -v,
pgbench 将清空 pgbench_tellers 和 pgbench_branches 表,并将截断
pgbench_history。

--聚合间隔=
聚合间隔的长度(以秒为单位)。 只能与 -l 一起使用 - with
此选项,日志包含每个时间间隔的摘要(事务数,最小/最大
延迟和两个对方差估计有用的附加字段)。

Windows 当前不支持此选项。

--采样率=
采样率,写入日志时使用,减少日志量
生成。 如果给出此选项,则只有指定的交易部分
登录。 1.0 表示将记录所有事务,0.05 表示仅 5%
交易将被记录。

请记住在处理日志文件时考虑采样率。 为了
例如,在计算 tps 值时,您需要相应地乘以数字(例如
使用 0.01 采样率,您将只能获得实际 tps 的 1/100)。

相当常见 可选项
pgbench 接受以下命令行常用参数:

-h 主机
--主机=主机
数据库服务器的主机名

-p 端口
--端口=端口
数据库服务器的端口号

-U 登录
--用户名=登录
要连接的用户名

-V
- 版
打印 pgbench 版本并退出。

-?
- 帮帮我
显示有关 pgbench 命令行参数的帮助,然后退出。

附注


什么是 is 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 “交易” 其实 执行 in pgbench?
默认事务脚本为每个事务发出七个命令:

1. 开始;

2. 更新 pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;

3. 从 pgbench_accounts 中选择 abalance 援助 = :aid;

4. 更新 pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;

5. 更新 pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;

6. INSERT INTO pgbench_history (tid, bid,aid, delta, mtime) VALUES (:tid, :bid, :aid,
:增量,当前_时间戳);

7.结束;

如果指定 -N,第 4 步和第 5 步不包含在交易中。 如果您指定 -S,
只有 选择 发出。

定制 脚本
pgbench 通过替换默认值来支持运行自定义基准测试场景
具有从文件中读取的事务脚本的事务脚本(如上所述)(-f
选项)。 在这种情况下,“事务”计为脚本文件的一次执行。 你可以
甚至指定多个脚本(多个 -f 选项),在这种情况下,随机一个
每次客户端会话开始新事务时都会选择脚本。

脚本文件的格式是每行一个 SQL 命令; 多行 SQL 命令不是
支持的。 空行和以 -- 开头的行将被忽略。 脚本文件行也可以
是“元命令”,由 pgbench 本身解释,如下所述。

脚本文件有一个简单的变量替换工具。 变量可以通过设置
命令行 -D 选项,上面解释过,或者通过下面解释的元命令。 在
除了由预设的任何变量 -D 命令行选项,有几个变量
表 221,“自动变量”中列出的自动预设。 一个值
为这些变量指定使用 -D 优先于自动预设。 一次
设置,变量的值可以通过写入插入到 SQL 命令中:变量名。 何时
运行多个客户端会话,每个会话都有自己的一组变量。

221. 自动表 变量
┌──────────┬────────────────────────────────┐
请按需咨询描述
├──────────┼──────────────────────────────────┤
│scale │ 当前比例因子 │
├──────────┼──────────────────────────────────┤
│client_id │ 唯一标识号 │
│ │ 客户端会话(从 │
│ │ 零) │
└──────────┴────────────────────────────────┘

脚本文件元命令以反斜杠 (\) 开头。 元命令的参数是
由空格分隔。 支持这些元命令:

\放 变量名 表达
设置变量 变量名 到一个整数值计算自 表达. 表达方式
可能包含整数常量,例如 5432,对变量的引用:变量名
由一元 (-) 或二元运算符 (+, -, *, /, %) 组成的表达式及其通常的
结合性和括号。

例子:

\set ntellers 10 * :规模
\set 援助 (1021 * :aid) % (100000 * :scale) + 1

\设置随机数 变量名 分钟 最大 [ 制服 | { 高斯 | 指数} 参数 ]
设置变量 变量名 到限制之间的随机整数值 分钟最大
包括的。 每个限制可以是整数常量或 a :变量名 参考
到具有整数值的变量。

默认情况下,或者当指定了 uniform 时,范围内的所有值都以相等的方式绘制
可能性。 指定高斯或指数选项会修改此行为; 每个
需要一个强制参数来确定分布的精确形状。

对于高斯分布,区间被映射到标准正态
分布(经典的钟形高斯曲线)在 -parameter 上截断
左侧和右侧的 + 参数。 区间中间的值更有可能
被绘制。 准确地说,如果 PHI(x) 是
标准正态分布,平均 mu 定义为 (max + min) / 2.0,其中

f(x) = PHI(2.0 * 参数 * (x - mu) / (max - min + 1)) /
(2.0 * PHI(参数) - 1.0)

然后价值 i 之间 分钟最大 inclusive 的概率是: f(i + 0.5) - f(i
- 0.5)。 直觉上,越大 参数, 值越接近
绘制间隔的中间,并且频率较低的值接近 分钟
最大 界限。 大约 67% 的值是从中间的 1.0 / 参数中提取的,即
平均值周围的相对 0.5 / 参数,中间 95 / 参数的 2.0%,即
是围绕平均值的相对 1.0 / 参数; 例如,如果 参数 是 4.0, 67%
的值是从间隔的中间四分之一 (1.0 / 4.0) 中提取的(即从 3.0
/ 8.0 到 5.0 / 8.0) 和间隔的中间一半 (95 / 2.0) 的 4.0%(秒
和四分之三)。 最低 参数 Box-Muller 的性能为 2.0
转变。

对于指数分布, 参数 通过截断一个控制分布
快速下降的指数分布在 参数,然后投影到
边界之间的整数。 准确地说,与

f(x) = exp(-参数 * (x - min) / (max - min + 1)) / (1.0 - exp(-参数))

然后值 i 之间 分钟最大 inclusive 是按概率绘制的:f(x) - f(x + 1)。
直觉上,越大 参数, 值越接近 分钟 旨在
访问的频率较低的值接近 最大 被访问。 越接近0
参数,访问分布越平坦(更均匀)。 粗略的近似
分布的最常见的 1% 值,接近 分钟,
绘制 参数% 的时间。 参数 值必须严格为正。

示例:

\setrandom 辅助 1:naccounts 高斯 5.0

\睡觉 [我们| 女士 | ]
使脚本执行休眠指定的持续时间,以微秒 (us) 为单位,
毫秒 (ms) 或秒 (s)。 如果省略单位,则秒为默认值。
可以是整数常量或 a :变量名 对变量的引用
具有整数值。

示例:

\睡眠 10 毫秒

\设置外壳 变量名 命令 [ 论点 ...]
设置变量 变量名 到 shell 命令的结果 命令. 命令必须
通过其标准输出返回一个整数值。

论点 可以是文本常量或 a :变量名 对变量的引用
任何类型。 如果你想使用 论点 以冒号开头,您需要添加一个
开头的附加冒号 论点.

示例:

\setshell variable_to_be_assigned 命令literal_argument :variable ::literal_starting_with_colon

\贝壳 命令 [ 论点 ...]
与\setshell 相同,但结果被忽略。

示例:

\shell 命令literal_argument :variable ::literal_starting_with_colon

例如,内置 TPC-B 类事务的完整定义是:

\设置 nbranches :规模
\set ntellers 10 * :规模
\设置 naccounts 100000 * :scale
\setrandom 帮助 1 :naccounts
\setrandom 出价 1 :nbranches
\setrandom tid 1 :ntellers
\setrandom 增量 -5000 5000
开始;
更新 pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
从 pgbench_accounts 中选择 abalance 帮助 = :aid;
更新 pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
更新 pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
INSERT INTO pgbench_history(tid,bid,aid,delta,mtime)值(:tid,:bid,:aid,:delta,CURRENT_TIMESTAMP);
结束;

这个脚本允许交易的每次迭代引用不同的,
随机选择的行。 (这个例子还说明了为什么它对每个客户端会话都很重要
有自己的变量——否则它们就不会独立地接触不同的
行。)

每笔交易 记录
随着 -l 选项,但没有 --聚合间隔, pgbench 写入所用的时间
每个事务到一个日志文件。 日志文件将命名为 pgbench_log。NNN,其中 NNN is
pgbench 进程的 PID。 如果 -j 选项是 2 或更高,创建多个工人
线程,每个线程都有自己的日志文件。 第一个工人将为其使用相同的名称
日志文件与标准的单个工人案例一样。 其他的附加日志文件
工人将被命名为 pgbench_log。NNN.MMM,其中 MMM 是每个的序列号
从 1 开始的工人。

日志格式为:

CLIENT_ID 交易号 文件编号 时间纪元 时间_我们 [时间表滞后]

哪里 是以微秒为单位的总交易时间, 文件编号 确定哪些
使用了脚本文件(当使用多个脚本指定时很有用 -f),
时间纪元/时间_我们 是 Unix 纪元格式时间戳和以微秒为单位的偏移量
(适用于创建带小数秒的 ISO 8601 时间戳)显示何时
交易完成。 场地 时间表滞后 是交易之间的差异
计划开始时间,以及它实际开始的时间,以微秒为单位。 它只是
出现时 - 速度 选项被使用。 最后一个字段 跳过的交易 报告
由于远远落后于计划而跳过的事务数。 它只是
当两个选项都存在时 - 速度--延迟限制 被使用。

以下是生成的日志文件的片段:

0 199 2241 0 1175850568 995598
0 200 2465 0 1175850568 998079
0 201 2513 0 1175850569 608
0 202 2038 0 1175850569 2663

另一个使用 --rate=100 和 --latency-limit=5 的例子(注意额外的 时间表滞后
柱子):

0 81 4621 0 1412881037 912698 3005
0 82 6173 0 1412881037 914578 4304
0 83 跳过 0 1412881037 914578 5217
0 83 跳过 0 1412881037 914578 5099
0 83 4722 0 1412881037 916203 3108
0 84 4142 0 1412881037 918023 2333
0 85 2465 0 1412881037 919759 740

在这个例子中,事务 82 延迟了,因为它的延迟(6.173 毫秒)超过了 5
毫秒限制。 接下来的两笔交易被跳过了,因为他们之前已经迟到了
他们甚至开始了。

在可以处理大量事务的硬件上运行长时间测试时,日志文件
可以变得非常大。 这 - 采样率 选项可用于仅记录随机样本
交易。

汇总 记录
随着 --聚合间隔 选项,日志使用有点不同的格式:

间隔开始 交易数量 延迟总和 延迟_2_sum 最小延迟 最大延迟 [滞后总和 滞后_2_和 最小滞后 最大滞后 [跳过的交易]]

哪里 间隔开始 是间隔的开始(Unix epoch 格式时间戳),
交易数量 是区间内的交易数量, 延迟总和 是一个
延迟总和(因此您可以轻松计算平均延迟)。 以下两个字段是
对方差估计有用 - 延迟总和 是延迟的总和和 延迟_2_sum 是一个
延迟的 2 次幂之和。 最后两个字段是 最小延迟 - 最小延迟
在区间内,和 最大延迟 - 间隔内的最大延迟。 一笔交易
提交时计入间隔。 最后的田野, 滞后总和,
滞后_2_和, 最小滞后最大滞后, 仅当 - 速度 选项被使用。 很
最后一个, 跳过的交易,仅在选项时出示 --延迟限制 存在,
也。 它们是从每个事务必须等待前一个事务的时间计算而来的
完成,即每个事务的预定开始时间和
它真正开始的时间。

这是示例输出:

1345828501 5601 1542744 483552416 61 2573
1345828503 7884 1979812 565806736 60 1479
1345828505 7208 1979422 567277552 59 1391
1345828507 7685 1980268 569784714 60 1398
1345828509 7073 1979779 573489941 236 1411

请注意,虽然纯(未聚合)日志文件包含自定义脚本的索引
文件,聚合日志没有。 因此,如果您需要每个脚本数据,您需要
自行汇总数据。

每个语句 潜伏期
随着 -r 选项,pgbench 收集每条语句经过的事务时间
由每个客户执行。 然后报告这些值的平均值,称为
基准测试完成后,每个语句的延迟。

对于默认脚本,输出将类似于以下内容:

开始真空……结束。
交易类型:TPC-B(有点)
比例因子:1
查询方式:简单
客户数量:10
线程数:1
每个客户的交易数量:1000
实际处理的交易数量:10000/10000
tps = 618.764555(包括连接建立)
tps = 622.977698(不包括连接建立)
以毫秒为单位的语句延迟:
0.004386 \设置nbranches 1 *:规模
0.001343 \set ntellers 10 * :scale
0.001212 \设置naccounts 100000 *:规模
0.001310 \setrandom 辅助 1 :naccounts
0.001073 \setrandom 出价 1 :nbranches
0.001005 \setrandom tid 1 :ntellers
0.001078 \setrandom 增量 -5000 5000
0.326152 开始;
0.603376 更新 pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
0.454643 从 pgbench_accounts 中选择余额,其中援助 =:援助;
5.528491 更新 pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
7.335435 更新 pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
0.371851 插入 pgbench_history(tid、bid、aid、delta、mtime)值(:tid、:bid、:aid、:delta、CURRENT_TIMESTAMP);
1.212976结束;

如果指定了多个脚本文件,则分别报告每个脚本文件的平均值
脚本文件。

请注意,收集每个语句延迟所需的额外计时信息
计算增加了一些开销。 这将减慢平均执行速度并降低
计算的 TPS。 减速程度因平台而异
硬件。 比较启用和不启用延迟报告的平均 TPS 值是一个
衡量定时开销是否重要的​​好方法。

行为准则
使用 pgbench 很容易产生完全无意义的数字。 这里有一些
帮助您获得有用结果的指南。

首先, 决不要 相信任何只运行几秒钟的测试。 使用 -t or
-T 选择使运行至少持续几分钟,以平均噪音。 在一些
在这种情况下,您可能需要数小时才能获得可重现的数字。 尝试一下是个好主意
测试运行几次,以确定您的数字是否可重现。

对于默认的 TPC-B 类测试场景,初始化比例因子 (-s) 应该
至少与您打算测试的最大客户端数量一样大(-c); 否则你会
主要是衡量更新争用。 只有 -s pgbench_branches 中的行
表,每个事务都想更新其中一个,所以 -c 值超过 -s
无疑会导致大量事务阻塞等待其他事务。

默认的测试场景对表格的时间也很敏感
被初始化:表中死行和死空间的累积改变了
结果。 要了解结果,您必须跟踪更新的总数和
当吸尘发生时。 如果启用了 autovacuum,它可能会导致不可预测的变化
测量的性能。

pgbench 的一个限制是它本身可能成为尝试测试一个的瓶颈
大量的客户会话。 这可以通过在不同的平台上运行 pgbench 来缓解
机器从数据库服务器,虽然低网络延迟将是必不可少的。 它可能
甚至可以在多台客户端机器上同时运行多个 pgbench 实例,
针对同一数据库服务器。

使用 onworks.net 服务在线使用 pgbench


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    安装后F
    安装后F
    PostInstallerF 将安装所有
    Fedora Linux 和其他软件
    默认不包括,之后
    第一次运行 Fedora。 它的
    容易...
    下载 PostInstallerF
  • 2
    痕迹
    痕迹
    strace 项目已移至
    https://strace.io. strace is a
    诊断、调试和指导
    Linux 的用户空间跟踪器。 它被使用
    监控一个...
    下载跟踪
  • 3
    gMKV 提取 GUI
    gMKV 提取 GUI
    mkvextract 实用程序的 GUI(部分
    MKVToolNix),其中包含大多数(如果
    不是全部) mkvextract 的功能和
    mkvinfo 实用程序。 用 C#NET 4.0 编写,...
    下载 gMKVExtractGUI
  • 4
    JasperReports 库
    JasperReports 库
    JasperReports 库是
    世界上最流行的开源
    商业智能和报告
    引擎。 它完全是用 Java 编写的
    它能够......
    下载 JasperReports 库
  • 5
    冰沙书籍
    冰沙书籍
    Frappe Books 是免费和开源的
    桌面记账软件
    简单且经过精心设计的用户可以使用
    小企业和自由职业者。 它'...
    下载冰沙书籍
  • 6
    数字 Python
    数字 Python
    新闻:NumPy 1.11.2 是最后一个版本
    这将在 sourceforge 上制作。 轮子
    适用于 Windows、Mac 和 Linux 以及
    存档的源分发可以是四个...
    下载数值 Python
  • 更多 ”

Linux 命令

Ad