问题标签 [aio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - pthread_sigmask 无法与 aio 回调线程一起正常工作
即使我阻止了这些信号,我的应用程序有时也会从 SIGIO 或 SIGUSR1 信号终止。
我的主线程从阻塞 SIGIO 和 SIGUSR1 开始,然后进行 2 次 AIO 读取操作。这些操作使用线程来获取有关操作状态的通知。通知函数(作为分离线程调用)启动另一个 AIO 操作(它们操作已读取的数据并开始将其写回文件)并通过发送信号来处理通知(一个操作使用 SIGIO,另一个使用 SIGUSR1)到这个过程。我通过在主线程中调用 sigwait 来同步接收这些信号。不幸的是,有时我的程序崩溃,被 SIGUSR1 或 SIGIO 信号(应该被 sigmask 阻止)停止。
一种可能的解决方案是为它们设置 SIG_IGN 处理程序,但这并不能解决问题。不应调用它们的处理程序,而应在主程序循环的下一次迭代中通过 sigwait 从挂起的信号中检索它们。
我不知道哪个线程以这种方式处理这个信号。也许是 init 接收到这个信号?还是一些壳线?我不知道。
linux - Ubuntu Linux 中的异步 IO io_submit 延迟
我正在寻找有关如何为我在 Ubuntu Linux 14.04 上运行的应用程序获得高效和高性能异步 IO 的建议。
我的应用程序处理事务并在磁盘/闪存上创建文件。随着应用程序通过交易进行,会创建额外的块,这些块必须附加到磁盘/闪存上的文件中。该应用程序还需要在处理新事务时经常读取此文件的块。除了创建一个必须附加到该文件的新块之外,每个事务可能还需要从此文件中读取不同的块。有一个传入的事务队列,应用程序可以继续处理队列中的事务,以创建足够深的 IO 操作管道,以隐藏磁盘或闪存上读取访问或写入完成的延迟。对于尚未写入磁盘/闪存的块(由先前的事务放入写入队列)的读取,应用程序将停止,直到相应的写入完成。
我有一个重要的性能目标——应用程序应该产生尽可能低的延迟来发出 IO 操作。我的应用程序需要大约 10 微秒来处理每个事务,并准备好对磁盘/闪存上的文件进行写入或读取。发出异步读取或写入的额外延迟应尽可能小,以便应用程序可以在只需要文件写入时以每个事务尽可能接近 10 微秒的速率完成处理每个事务。
我们正在试验一种使用 io_submit 发出写入和读取请求的实现。对于满足我们要求的最佳方法的任何建议或反馈,我将不胜感激。io_submit 是否会给我们最好的性能来实现我们的目标?我应该对每次写入 io_submit 的延迟和每次读取 io_submit 的延迟有什么期望?
使用我们的实验代码(在 2.3 GHz Haswell Macbook Pro、Ubuntu Linux 14.04 上运行),我们测量了在扩展输出文件时写入 io_submit 大约 50 微秒。这太长了,我们甚至没有接近我们的性能要求。任何帮助我以最短延迟启动写入请求的指导将不胜感激。
mysql - 无法在没有 root 帐户的服务器上安装 MySQL 5.7
我使用的托管服务器没有为我提供 root 帐户。他们不为我提供数据库安装服务。服务器是 Red Hat Enterprise Linux Server release 6.1 (Santiago) x86_64。
我尝试下载并安装 MySQL 5.7.10,但它显示了有关 InnoDB 设置的错误,如下所示:
我还做了以下事情:
我尝试了以下命令,但它给了我同样的错误:
我在 my.cnf 中写了以下内容,但没有解决错误:
我没有解决它们的想法。请你帮助我好吗?
c - 信号处理程序内部的 aio_read
我将使用 aio 进行异步读取。当 aio 完成并触发信号处理程序时,我可能需要进行另一个 aio_read 调用并继续。
安全函数中没有提到 aio_read(在 man 信号中)。不过,普通阅读是。
在 aio 信号处理程序中执行后续 aio_read 调用有什么危险?
c - aio_write does not work in my simple client/server proggram
I am starting to use aio to write a simple client server program.My client program:
My server program:
I expect my server side to print out hello, but it does not. Thanks in advance.
linux - 使用内核 AIO 的应用程序
谁能指出一些使用内核 AIO(即 io_submit() 系列)的(最好是常用的)应用程序,例如任何 SQL/no-SQL 数据库等?我希望它能够在每个线程上发出队列深度大于 1 的异步读取,以使高度并行的 SSD 完全饱和,该 SSD 支持 64> 个正在进行的请求而不会出现明显的降级。
我知道 InnoDB,但正在寻找更简单的东西(可能是 KV 存储)。
更新:我不是在寻找示例代码,也不是像fio+libaio
. 我有兴趣找到一组可以使设备在更真实的环境中饱和的应用程序。
linux - 为 CRIU 1.8 运行单元测试时出错
我正在尝试在 CRIU 1.8 上运行单元测试。为了准备盒子,我安装了:
libprotobuf-lite8 libprotobuf8 zlib1g-dev libprotobuf-dev libprotobuf-c0 libprotobuf-c0-dev libprotoc8 protobuf-c-compiler protobuf-compiler libaio-dev libcap-dev
之后,我以 root 身份运行,make test
得到以下输出:
我认为我的问题是那里的 CRIU CHECK 块内的问题,但我只是不确定我在这里看到了什么。谁能指出我正确的方向。如果谷歌有帮助,那我太无知了,无法识别它。谢谢!
此外,我在 SO 上没有将其标记为 CRIU 的声誉(显然这是一个新标签),但它显然与 CRIU 有关。如果您同意并有权力,请在此贴上标签?
linux - Linux AIO 是否支持 RAW 套接字?
我正在努力让 AIO 在 Linux(3.19 版)上工作以在 RAW 套接字上接收数据包,但无济于事。我已经成功地将 AIO 用于 UDP 和 TCP 套接字,但不能使其适用于 RAW 套接字。我已经尝试过 IPv4 和 IPv6。
有谁知道 AIO 是否支持 RAW 套接字?
这是我的应用程序中的一些代码片段:
python - 使用 Python 的 asyncio 设计异步 API
我曾经在 Java 中使用 Netty,我真的很喜欢它的概念和做事的方式。现在,我正在开发一个 Python 项目,我需要设计一个能够在许多不同的传输层上异步执行 IO 操作的 API。
我决定创建类似于 Netty 的东西。当然,我知道 Netty 是一个非常大的项目,我永远无法模仿它的出色功能,但我只想在 Python 的 asyncio 之上实现它的一些基础知识。
这是我到目前为止得到的:
这是核心 API 模块。这是一个应该如何使用的例子:
正如我所说,我对 asyncio 很陌生。我想问问你的意见,我真的很感激一些建议。就像,这是asyncio
应该使用的方式吗?还是我完全错过了重点?这可能行得通吗?还有一些同步问题呢?我知道锁、队列之类的东西,但我不清楚如何将它们与asyncio
.
我不知道 API 是否设计正确。例如,我不太确定关键字async
是否在正确的地方使用。也一样await
。
如果你碰巧发现了什么,请给我留言,谢谢!
java - ubuntu 16.04 不支持 java aio SO_KEEPALIVE?
我正在测试 java AsynchronousServerSocketChannel,但是当我尝试设置 SO_KEEPALIVE=true 时,一条错误消息显示我不支持它?如何解决以下问题?ubunut服务器真的不支持keep-alive吗?
代码是:
错误是: