这是一个多次被问过的问题,但是我找不到很好的支持答案.
许多人建议使用top命令,但如果你运行top一次(因为你有一个脚本,例如每1秒收集一次Cpu使用),它将始终给出相同的Cpu使用结果(例1,例2).
计算CPU使用率的更准确方法是从中读取值/proc/stat
,但大多数答案仅使用前4个字段/proc/stat
来计算它(此处为一个示例).
/proc/stat/
从Linux内核2.6.33开始,每CPU核心有10个字段!
我还使用/ proc/stat问题在Linux中找到了这个准确计算CPU利用率的问题,该问题指出了同样的问题 - 大多数其他问题只考虑了许多领域中的4个问题 - 但这里给出的答案仍然是"我在认为"(不确定),除此之外,它只关注前7个领域(满分为10个/proc/stat/
)
这个 perl脚本使用所有字段来计算CPU使用率,经过一些进一步的调查后我再也认为这是不正确的.
采取快速查找到内核代码后在这里,它看起来像,例如,guest_nice
并且guest fields
总是与一起增加nice
和user
(所以他们不应该被包含在CPU使用率计算,因为它们包含在nice
和user
领域已经)
/*
* Account guest cpu time to a process.
* @p: the process that the cpu time gets accounted to
* @cputime: the cpu time spent in virtual machine since the last update …
Run Code Online (Sandbox Code Playgroud) 经过大量搜索,我得出的结论是 ansible(我使用最新的稳定版 v2.5.3)很可能不支持从include_role
andimport_role
语句注册变量或通知。
还有一个类似的问题在这里,并在其中一个答案的建议是:Each individual task within your include file can register variables, and you can reference those variables elsewhere
。
但是,如果我遵循这个建议,那么我需要在我包含的所有角色中添加额外的不必要的代码,只是因为我可能需要在特殊服务器中的解决方法。事情很快就会失控并变得混乱,尤其是在嵌套角色包含的情况下(即当包含的角色包含更多包含的角色时)。此外,如果我使用 ansible-galaxy 的角色,我会想坚持上游版本(将角色视为外部库),这意味着理想情况下我不想更改角色的代码,因为它听起来不太直观必须维护必须使用的所有角色的分支(否则外部角色/库几乎失去意义)。
那么,当一个人想要重用来自外部角色的代码时,针对此类问题的建议解决方案是什么,并根据被调用角色是否发生任何更改来做某事?就我如何实现 ansible playbook 逻辑而言,我在这里认为完全错误吗?
看一下我正在尝试做的以下具体示例:
我有想要在较小角色中重用的拆分任务。在我的common
角色中,我有一add-file.yml
组如下所示的任务 ( roles/common/tasks/add-file.yml
):
- name: Copying file "{{ file.src }}" to "{{ file.dest }}"
copy:
src: "{{ file.src }}"
dest: "{{ file.dest }}"
owner: "{{ file.owner | default(ansible_user_id) }}" …
Run Code Online (Sandbox Code Playgroud) 我编写了一个Perl脚本,它在一个超过140000行的表中进行了一些SQL查询并进行了扩展.
我想比较日期并获得一些行,但我意识到只需更改一个SQL查询,我就可以获得如此多的不同执行速度.
看一下执行100 $ sql查询的以下测试结果.我在不同执行之间在脚本中更改的唯一行是$ sql行.
我多次运行测试并且总是得到类似的结果,所以我猜它与缓存问题无关.
my $sql = "SELECT `mem_used`, `swap_used`, `mem_total`
FROM `$config{db}{data_table}`
WHERE `host_id` = $host_id
AND date >= '$date'
AND TIMESTAMPDIFF( MINUTE , `date`, '$date' ) <= $interval;"; # VERY SLOW
time ./data_smoothing.pl
real 1m28.818s
user 1m6.516s
sys 0m0.256s
Run Code Online (Sandbox Code Playgroud)
my $sql = "SELECT `mem_used`, `swap_used`, `mem_total`
FROM `$config{db}{data_table}`
WHERE `host_id` = $host_id
AND date >= '$date'
AND (UNIX_TIMESTAMP(`date`) - UNIX_TIMESTAMP('$date')) <= ($interval * 60);"; #SLOW
$ time ./data_smoothing.pl
real 0m10.005s
user 0m0.108s
sys 0m0.028s
Run Code Online (Sandbox Code Playgroud)
my …
Run Code Online (Sandbox Code Playgroud) 如果文件存在,我想将一些文本附加到文件中,或者创建文件并向其附加一些附加文本(如果它是刚刚创建的)。我知道我可以使用open("filename","a")追加/创建,因为如果文件不存在,这行代码将创建文件。但是,我如何知道该文件是否存在或刚刚创建?
最终我想实现这一目标:
with(open("filename","a")) as f:
if filename existed before open
# Append text
else if filename was just created
# Append some headers
# Append text
Run Code Online (Sandbox Code Playgroud)
我可以通过首先检查文件是否存在 (os.path.isfile(filename)) 然后采取相应措施来实现这一点,但我正在寻找一种更优雅的方式。
有什么方法可以创造一个完全自定义的传奇,不关心我的情节中的美学或其他任何东西?我想尽可能从头开始设计一切.我将拥有多少组传说,每个图例的标题,形状,颜色,大小,线型,填充,标签,顺序等.我已经花了差不多两个工作日来试图弄清楚如何创建传说来看我希望他们看的样子(在我获得数据之后,情节本身并不需要花费几分钟).
看看下面的示例代码(随机数据,但很好地展示了我想要的内容):
require(dplyr)
require(RColorBrewer)
col <- brewer.pal(3, "Spectral")
a <- data.frame(multiplier = c(0.5, 0.7, 1.0), multiplier2 = c(0.3, 0.1), random = runif(3 * 500))
a$result = a$multiplier * a$random * runif(length(a$random)) * a$multiplier2
a_grouped_by_multiplier = group_by(a, multiplier)
means = summarise(a_grouped_by_multiplier, mean_rand = mean(random), mean_res = mean(result))
ggplot(a, aes(x = random, y = result)) +
geom_density2d(bins = 20) +
geom_point(aes(color = factor(multiplier2)), size = 0.7) +
geom_vline(data = means, aes(xintercept = mean_rand), color = "orange", linetype = "solid", size = 1.5, …
Run Code Online (Sandbox Code Playgroud) 我创建了一个R脚本,它首先需要加载一些库.
问题是脚本需要1.6秒才能完成计算(使用Linux命令"time"多次测量),0.7秒只需加载库!
该脚本经常运行,因此库加载的延迟几乎占实际工作负载的80%!
有没有办法预先加载库,以便每次脚本运行时都不会加载它们?
任何其他建议绕过这种缓慢?
#!/usr/bin/Rscript
library(methods, quietly=TRUE, warn.conflicts = FALSE)
library(MASS, quietly=TRUE, warn.conflicts = FALSE)
library(RBGL, quietly=TRUE, warn.conflicts = FALSE)
library(igraph, quietly=TRUE, warn.conflicts = FALSE)
library(bnlearn, quietly=TRUE, warn.conflicts = FALSE)
library(gRbase, quietly=TRUE, warn.conflicts = FALSE)
library(gRain, quietly=TRUE, warn.conflicts = FALSE)
..
..
Run Code Online (Sandbox Code Playgroud) 我希望我的munin插件能够报告未知值(如果无法报告该值)。我要退还什么?
什么都不适合我。
背景:如果ntp根本没有运行,则ntp_offset插件将失败。我想返回未知值并发送警报消息。