MT5和速度在行动 - 页 75

 
Valeriy Yastremskiy:

我不是图表方面的专家。重要性是由其他任务的开始对当前任务的结束的依赖性决定的,其他标准是次要的,但也有任务执行时间。一般来说,这是很困难的,而且最可悲的是,优先次序的算法不能临时改变。从好的方面看,在出现任何问题之前,我希望开发商能做出一些澄清。这很复杂,但这是环境发展中的正确目标。

摘自对实时系统中如何工作的描述。

通常情况下,优先级是动态的,这意味着它们可以在运行时由进程本身以及操作系统改变。
对中断的响应与CPU密集型计算分开。
一旦有事件或中断发生,其处理程序就会立即被列入准备好的进程队列中。
中断处理程序通常很紧凑,因为它们必须提供快速响应,
,例如输入新的数据,并将控制权转移到以较低优先级执行的更复杂的CPU密集型进程。

 
Roman:

你好,尼古拉。这倒是真的。
但是,不会出现与斯拉瓦谈到的同步化相同的问题吗,即不合理的刹车。
或者也许没有问题?))也许不使用异步模型比用优先级同步更容易?))

你好。
我不是异步和中断方面的专家,虽然我有一些知识和经验。
计时器的问题应该完全没有问题。由于序列并不重要,重要的是周期性。
此外,根据我的理解,定时器是基于系统硬件中断的,这其实并不重要,因为老板负责资源分配。
我认为整个异步控制系统是用硬件中断来实现的,包括来自定时器的中断。
,我还是想知道中断本身的资源消耗有多大。例如,一个系统中断来自CPU定时器,执行一个全局变量 的增量。这个增量本身将花费系统大约1纳秒。但是。

  • 保存恢复工作所需的所有运行进程和/或线程的参数需要多长时间?
  • 这种节省是由硬件还是软件完成的?
  • 恢复过程需要多长时间?
  • 我们可以衡量这种资源密集度吗?可能不会,因为你怎么能抓住中断的时机呢?
  • 这些资源成本的顺序是什么--几十、几百纳秒、微秒还是几十和几百微秒?如果能得到这样的信息,那就很有意思了。

一般来说,我意识到我缺乏知识和经验。这就是为什么我尽量不与开发人员讨论关于异步优先级的问题。我明白,在试图创建一个完美的系统时,有很多细微的差别、陷阱和障碍,特别是当涉及到交易订单和获得交易信息时。
,尽管说实话,我仍然不明白为什么他们在5中把一些功能变成异步的,这是一个很大的不便。我是指ChartGet...,ChartTimePriceToXY,ChartXYToTimePrice。
毕竟,合乎逻辑的是,图表状态表的填充应该是异步的,而命令应该只从这个表中读取数据。而且,如果读取时的数据有几毫秒的误差,那也不是问题。
问题是,在追求想象中的数据相关性时,会出现几十毫秒的滞后,在此期间,如果最初这些命令不是异步的,而是简单地读取图表状态表的最后已知数据,那么提取的相关性就会在更大程度上变得不相关
而从执行时间来看,这些函数在4中并不是异步的。

 
Roman:

摘自对实时系统中如何工作的描述。

通常情况下,优先级是动态的,这意味着在运行时它们可以被进程本身以及操作系统所改变。
对中断的反应与CPU密集型计算分开。
一旦有事件或中断发生,其处理程序就会立即被列入准备好的进程队列中。
中断处理程序通常很紧凑,因为它们需要提供快速响应,
,例如输入新数据,并将控制权传递给以较低优先级执行的更复杂的处理器密集型进程。

正如我所描述的那样))))当然,优先级逻辑是动态的。而这就是设置级别的难度。通过设置优先级别,我们无法确定其在下面环境的动态优先级逻辑中的执行时间。终端总是在wine或linux环境之上,无法影响下面环境的优先级逻辑。

 
Nikolai Semko:


并非所有提出的问题都被认为会得到回答。

中断本身的资源密集度如何。
最有可能的是取决于处理器的频率。

该过程需要多长时间来保存,以便进一步恢复
根据基于量化的算法,如果出现以下情况,活动过程就会改变。

  • 该进程已终止并离开系统
  • 发生错误
  • 进程已被切换到待机状态
  • 进程已经用完了一定量的处理器时间,而

如何抓住中断的机会。
预分频器
是一个时钟分频器,作为一个或多个串联的T型触发器。

 
Roman:

不是所有提出的问题都应该得到回答。

去研究这个问题(至少10年),请不要在这个主题上乱扔垃圾。

这里讨论的问题是不同的培训和不同的班级。

 
Nikolai Semko:
  • 保存恢复操作所需的所有运行进程和/或线程的参数需要多长时间?
  • 这种节省是由硬件还是软件完成的?

从286处理器开始就没有什么事情发生了吗? 我不记得了,也从来没有理解过,但是从Pentium-1开始(我读过一本关于它的书,但是很久以前)。

每个处理器都有分配的虚拟内存;内存组(RAM单元)的物理地址被处理器本身翻译成虚拟地址(或者说反过来? 我不记得了,但似乎是一个特殊的寄存器和一个指向地址转换表的虚拟指针)。这是硬件发生的一切,它是不可测量的,它是所谓的处理器核心,它区别于每一个英特尔处理器系列,它不是高速缓存!它是由硬件组成的。

尼古拉-森科
  • 恢复这个过程需要多长时间?

Win系统上的任何程序都应该注册为一个进程,并至少创建一个线程。

然后Win任务调度器将为进程分配资源,并为其排队发送消息,调度器如何工作对我来说并不感兴趣,只需提高进程的优先级就足够了,可以看到,经过一些努力,PC开始计划,即微软为我的应用程序提供资源,这足以使操作系统继续运行。

Nikolai Semko:
  • 是否有可能衡量这种资源强度?可能不会,因为我怎么能抓住中断的时机呢?
  • 这些资源成本的顺序是什么--、几十、几百纳秒、微秒还是几十和几百微秒?如果能得到这样的信息,那就很有意思了。

中断是硬件,它是由操作系统处理的,当然是在驱动程序的帮助下。

计时器?- 如果我没记错的话,除非进程正在处理,否则定时器是不会堵塞消息队列的,这与操作系统的傻瓜式管理有关,谷歌WM_TIMER - 应该有详细说明

数字的顺序?只有处理器的时钟可以被测量,然后乘以处理器的计算系数,这里讨论过https://www.mql5.com/ru/forum/352454#comment_18588098 , 谷歌上有大量关于性能计量的信息。

 
Renat Fatkhullin:

去研究这个问题吧(至少10年),不要在这个问题上乱扔垃圾,拜托。

我们在这里以不同的训练和不同的阶层讨论问题。

每个人都应该被送到这里,而不是有选择地被送到这里))但像往常一样,谁问的问题够多,谁就会被踢到帽子上。
在我了解到处理程序是以阻塞模式执行后,我没有白白提出这个话题。
我触及了问题的真正症结,而你却不喜欢它。好吧,我放弃这个话题。
但我不明白在同步处理中实现及时事件的意义。
Slava, Nikolay, Valery 感谢你们的建设性对话。

 
Igor Makanu:

从286处理器开始就没有发生过吗?嗯,我不记得了,我也没有处理过这个问题,但肯定是从Pentium-1开始的(我读过一本关于这个问题的书,虽然是很久以前)
,这是硬件的全部,它是不可测量的,是所谓的处理器核心,它区别于每一个英特尔处理器系列,它不是缓存!

如果是这样就好了。
我认为是这样。几乎所有的东西都是在硬件层面。否则多线程就不会有那么高的效率。

 
Nikolai Semko:

如果是这样就好了。
我认为是这样的。几乎所有的东西都是在硬件层面。否则多线程就不会那么有效。

只有这样

谷歌:处理器保护模式

如果我没有弄错的话,保护模式给了操作系统内核一个单独的权限级别,而且由于每个进程的虚拟内存--不可能得到正在运行的程序的RAM数据......好吧,除非你在调试器下作为一个单独的进程运行....,这是另一个专业领域))))。

但是,明确地说,一切都在硬件层面上工作,不可能测量它,只有操作系统工具 - 进程的虚拟内存切换是瞬间的,处理器本身在内部频率上工作 - CPU乘数...而如果你开始考虑缓存...为什么?- 有了问题,就要寻找解决方案!想写一个驱动程序吗?)))

SZZ:你可以写一个驱动程序,我记得当我使用TCP-logger时,它被安装为一个驱动程序,并记录了所有的流量,然后在表中按进程显示所有的流量....。只有一件事,就是思考编写驱动程序将如何帮助开发有利可图的TCP ))))。



UPD: Hubr "什么是保护模式,它有什么作用"https://habr.com/ru/post/118881/

UPD: 硬件级别(CPU)的代码执行权限 -受保护的环 维基

 
Renat Fatkhullin:

你总是能保证在任何 指令的随机单个样本上出现失败 ,包括最简单的汇编类型inc eax。这是架构上的原因,也是由于 "诚实地将数千个线程的时间量子分配给少数核心 "的物理限制。

不要再犯傻了,继续捕捉每百万个请求中的单个异常值。

注意到CopyTicks很少滞后。我写了一个测试脚本

#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnTick()
{
  Sleep(1000);
  
  MqlTick Tick[1];
  
  _B(CopyTicks(_Symbol, Tick, COPY_TICKS_ALL, 0, 1), 100);
  _B(SymbolInfoTick(_Symbol, Tick[0]), 100);
}

并在压力模式下运行它。SymbolInfoTick比CopyTicks有明显更多的警报。


没有投诉。我只想了解,是什么影响了这些功能的实现中对压力负荷的不同看法?