Skip to content

Commit

Permalink
添加性能监控功能
Browse files Browse the repository at this point in the history
- 监测GPU, DMC(内存控制器), NPU, RGA的频率和利用率
  • Loading branch information
happyme531 committed Nov 23, 2023
1 parent 52e9a80 commit a25ba5c
Show file tree
Hide file tree
Showing 5 changed files with 576 additions and 134 deletions.
40 changes: 39 additions & 1 deletion bin/5bcli.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:a5btool/input_voltage.dart';
import 'package:a5btool/board_rev.dart';
import 'package:a5btool/usbpd.dart';
import 'package:a5btool/cpuidle.dart';
import 'package:a5btool/perfmon.dart';
import 'package:a5btool/generated/version.dart';

import 'package:args/args.dart';
Expand All @@ -18,6 +19,7 @@ import 'package:args/args.dart';
/// input_voltage 读取输入电压
/// board_rev 获取板子版本
/// usbpd 获取usbpd信息
/// perfmon 性能监控
///
int main(List<String> arguments) {
String selfName = Platform.executable.split(Platform.pathSeparator).last;
Expand Down Expand Up @@ -61,6 +63,13 @@ int main(List<String> arguments) {
cpuidleParser.addFlag('enable', negatable: false, help: '启用cpuidle');
cpuidleParser.addFlag('help', abbr: 'h', negatable: false, help: '获取帮助');

//性能监控
var perfmonParser = ArgParser();
parser.addCommand('perfmon', perfmonParser);
perfmonParser.addFlag('csv', negatable: false, help: '输出csv格式');
perfmonParser.addOption('interval', abbr: 'i', help: '指定采样间隔, 单位为秒, 默认为1');
perfmonParser.addFlag('help', abbr: 'h', negatable: false, help: '获取帮助');

var results = parser.parse(arguments);

var helpText = '''
Expand All @@ -72,7 +81,8 @@ int main(List<String> arguments) {
board_rev 获取板子版本
usbpd 获取当前PD供电状态
cpuidle 控制cpuidle
perfmon 性能监控
可用的参数:
${parser.usage}
Expand Down Expand Up @@ -274,6 +284,34 @@ ${parser.usage}
return 1;
}
break;

case 'perfmon':
if (results.command!['help']) {
print(perfmonParser.usage);
return 0;
}
var perfmon = Perfmon();
perfmon.init();
var interval = results.command!['interval'];
double intervalValue = 1;
if (interval != null) {
intervalValue = double.parse(interval);
}
if (results.command!['csv']) {
print(perfmon.getCsvHeader());
while (true) {
sleep(Duration(milliseconds: (intervalValue * 1000).toInt()));
print(perfmon.getCsvLine());
}
} else {
while (true) {
sleep(Duration(milliseconds: (intervalValue * 1000).toInt()));
var currentTime = DateTime.now().toIso8601String();
print("\x1b[2J\x1b[H"); //清除屏幕
print("5bcli 性能监控 - ${intervalValue}s - $currentTime");
print(perfmon.getUserFriendlyMessage());
}
}
}
return 0;
}
Loading

0 comments on commit a25ba5c

Please sign in to comment.