应用程序如何自动识别一组标准的命令行选项,以及如何使用这些选项来调试和配置应用程序。这些选项可以在不需要修改应用程序代码的情况下被解释和执行。例如,使用 --dump-config 选项,应用程序会自动输出其链接的 Cobalt
库的构建设置。
选项 | 描述 |
---|---|
--main-prio=<prio> |
设置主线程优先级 |
--print-buffer-size=<bytes> |
设置用于输出的打印缓冲区大小,默认为 16k |
--print-buffer-count=<num> |
设置输出环中的缓冲区总数,默认为 4 |
--print-sync-delay=<ms> |
设置输出缓冲区同步之前的最长延迟,默认每 100 毫秒刷新一次 |
--cpu-affinity=<cpu[,cpu]...> |
设置线程的 CPU亲和性 |
--[no-]sanity |
关闭/开启 健壮性检查 |
--verbose[=level] |
将详细程度设置为所需的水平,默认值为1 |
--silent , --quiet |
Same as --verbose=0 |
--trace[=level] |
将trace设置为所需的级别,默认值为1 |
--version |
获取实时核版本信息 |
--dump-config |
构建应用程序链接的Cobalt库的设置 |
--help |
帮助 |
用于这是主线程的线程优先级,通常是在 main() 函数内部进行。
参数
SCHED_OTHER
调度策略。这是标准的非实时调度策略,通常用于普通的后台处理。SCHED_FIFO
调度策略,并设置为给定的优先级。SCHED_FIFO
(先进先出)是一种实时调度策略,确保了更高优先级的线程总是能够在低优先级线程之前运行。标准输出函数(如 printf(3), fprintf(3), 和 puts(3))背后的缓冲机制。
当启用符号封装时,Cobalt
会介入常见的 stdio
输出调用。这意味着,即便是在实时线程中调用如 printf
等函数,也不会因为等待 I/O 操作而阻塞,从而保证了实时性。
这些 stdio
调用使用一种缓冲区的机制。这些缓冲区组成一个输出环,由实时线程无锁地填充,然后定期由一个常规的(非实时)Linux 帮助线程刷新到进程的目的输出流(如 stdout
、stderr
或其他特定的流)。
参数用途:
--print-buffer-size
参数,开发者可以设置每个缓冲区的大小。默认情况下,每个缓冲区大小为 16 KB。用于设置输出环中缓冲区的总数量。这些缓冲区与之前提到的 --print-buffer-size
参数密切相关,后者定义了单个缓冲区的大小。
参数用途:
Linux
帮助线程定期清空,将数据刷新到如 stdout
或 stderr
这样的目的输出流。通过增加缓冲区的数量,可以提高在高负载下处理输出请求的能力,因为这样可以在输出流被阻塞或延迟时存储更多的输出数据。此参数用于设置输出环中缓冲区内容在被同步到最终输出流之前的最大延迟时间,单位为毫秒(ms),这与之前提到的 --print-buffer-size
和 --print-buffer-count
参数配合使用,共同管理输出数据的处理。
参数用途:
用于指定 Cobalt
应用程序创建的线程可以运行的 CPU 集合。这个参数在没有明确指定线程应该固定运行在特定 CPU 上时非常有用。默认情况下,线程可以在任何在线的 CPU 上运行。
参数用途:
用于在 Cobalt
库中开启或关闭启动期间的健全性检查。这是一个开关选项,其中 --sanity 表示开启检查,而 --no-sanity 表示关闭检查。这些检查主要在应用程序启动时进行,以确保运行环境符合预期的配置和健康状态。
检查的内容:
这些健全性检查包括但不限于:
Cobalt
库的系统配置是否正确。用于设置 Cobalt
应用程序的输出详细级别。这个参数允许应用程序在运行时显示多少详细的日志或调试信息。
参数用途:
与参数 --verbose=0
相同
用来调整和控制应用程序的跟踪详细度,有助于监控和调试内部操作。