腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
3
回答
Linux
/FreeBSD上的
O
_
DIRECT
与
O
_SYNC
c
、
linux
、
freebsd
我正在编写一个运行在
Linux
和FreeBSD上的程序,我想确保在每个write()返回时,数据实际上都被写到物理设备上的文件中,这样我的数据就不会因为意外而丢失(例如,停电,进程被意外中断,等等)。根据打开(2)手册页,在
Linux
(高于2.6)上,
O
_
DIRECT
是同步的,但可能存在性能问题;在FreeBSD上,
O
_
DIRECT
不能保证同步,也可能有问题。因此,在
Linux
上,
O
_
DIRECT
或
O
_SYNC都保
浏览 28
提问于2013-10-18
得票数 7
回答已采纳
1
回答
忽略
O
_
DIRECT
安全吗?
filesystems
、
posix
、
fuse
文件系统忽略
O
_
DIRECT
?读写操作将像往常一样进行。开诚布公就会忽视它而不会失败。想起来的问题不多。 据我所知,缓存缓冲区/页缓存中的文件内容是VFS的责任,而不是文件系统的责任。VFS也会解释这个标志吗?
浏览 0
提问于2015-10-26
得票数 2
回答已采纳
1
回答
在访问块设备时,
O
_
DIRECT
标志是否也绕过了
Linux
页面缓存?
linux-kernel
、
kvm
我正在运行许多KVM虚拟机,这些虚拟机使用
O
_
DIRECT
标志打开硬盘映像。注意:这里
O
_
DIRECT
的用例是,客户已经在维护自己的页面缓存,所以在主机上复制它是没有意义的。
浏览 0
提问于2016-01-27
得票数 3
1
回答
在写入文件时,直接io -
O
_
DIRECT
似乎无法工作。
c
、
linux
、
io
在
linux
上(
Linux
3.16.0-38-泛型#52~14.04.1Ubuntu x86_64 GNU/
Linux
),当试图通过启用
O
_
DIRECT
标志的直接io写入文件时,似乎在写之后,文件仍然是空的
direct
_io_test.c:#include <stdio.h>#include<
浏览 4
提问于2015-11-07
得票数 2
回答已采纳
4
回答
O
_SYNC和
O
_
DIRECT
标志在open(2)中有什么不同/相似之处?
io
、
posix
、
synchronous
O
_SYNC和
O
_
DIRECT
标志的用法和效果非常令人困惑,并且在不同的平台上似乎有所不同。在
Linux
手册页(请参阅示例)中,
O
_
DIRECT
提供同步I/
O
,最小化缓存影响,并要求您自己处理块大小对齐。
O
_SYNC只保证同步I/
O
。虽然两者都保证数据被写入硬盘的缓存,但我认为直接I/
O
操作应该比普通的同步I/
O
更快,因为它们绕过了页面缓存(尽管FreeBSD
浏览 7
提问于2011-02-20
得票数 55
1
回答
Linux
内核如何处理异步I/
O
(AIO)请求?
c
、
linux
、
io
、
linux-kernel
、
aio
我正在尝试
Linux
(我指的是
Linux
,即linuxaio.h提供的函数,如io_submit(...)等,而不是POSIX )。我使用
O
_
DIRECT
标志打开块设备文件,并确保对缓冲区的写入符合块大小。 我注意到
Linux
比使用同时带有
O
_
DIRECT
标志的同步IO要快得多。最让我惊讶的是,使用
Linux
对几个KBs进行多个小随机读取所获得的吞吐量非常高,甚至比使用同步I/
O
和
O
_
DIRECT
浏览 1
提问于2015-03-12
得票数 20
回答已采纳
2
回答
O
_
DIRECT
未声明,Eclipse,Ubuntu20.04
c
、
linux
、
ubuntu
、
eclipse-cdt
我正经历着
O
_
DIRECT
的一个问题。我试图在open()中使用它,但是我得到了一个错误,例如:我包括<fcntl.h> 我查看了/usr/include/目录中的
O
_
DIRECT
,它存在于x86_64-
linux
-gnu/bits/fcntl-
linux
.h中。我试图包含这个文
浏览 10
提问于2020-04-27
得票数 2
回答已采纳
2
回答
在
Linux
中读取没有磁盘缓存的文件
linux
、
io
因为
Linux
也缓存所有读取的内容,所以它们不必要地填充缓存,这大大降低了系统的速度,除非它有SSD驱动器。 那么,如何在不填充磁盘缓存的情况下从文件中打开和读取?
浏览 4
提问于2013-03-07
得票数 13
回答已采纳
2
回答
为什么我看不到gdb回溯中的行号?
c
、
gdb
、
icc
This GDB was configured as "x86_64-redhat-
linux
-gnu".(gdb) break
direct
.c:5550 52 { 53 int i/mkl/inc
浏览 4
提问于2019-05-29
得票数 2
回答已采纳
1
回答
当调用read()和write()时返回“无效参数”
android
、
c
、
linux
、
android-ndk
、
fcntl
data_ptr); fd = open(filePath,
O
_CREAT|
O
_RDWR |
O
_
DIRECT
|
O
_SYNC, S_IRUSR | S_IWUSR); if(ret<0){|
O
_RDWR |
O
_
DIRECT</
浏览 2
提问于2015-01-27
得票数 2
回答已采纳
1
回答
为什么没有syscall.
O
_
DIRECT
标志的写入文件会使写入文件在go中变慢?
go
、
filesystems
、
file-writing
当两篇文章向2个文件写入相同的字节片时,它会计算时间(Ns),其中一个文件的标志是syscall.
O
_
DIRECT
,另一个则不是。| syscall.
O
_
DIRECT
| syscall.
O
_TRUNC, 0); if err != nil {panic(err);} fmt.Println("sysW2:&qu
浏览 4
提问于2022-06-08
得票数 1
回答已采纳
1
回答
在哪里记录了
O
_NOATIME的声明位置?
c
、
linux
according to die.net , but not man7.org openat(3, "foobar",
O
_NOATIME, 0);我得到了我并不是真的在找人告诉我:“它在文件<xxx.h>中,包括那个”。
浏览 9
提问于2022-09-07
得票数 2
回答已采纳
4
回答
强迫JVM在没有页面缓存的情况下执行所有IO (例如
O
_
DIRECT
)
java
、
linux
、
jvm
对于实验来说非常重要的是,结果不受页面缓存(我正在使用
linux
)的影响。Error: Could not find or load main class perf.TestDirectIO); + fileOpen(env, this, path, fis_fd,
O
_RDONLY
浏览 10
提问于2013-03-05
得票数 13
回答已采纳
2
回答
fcntl不工作
c
、
unix
、
fcntl
//current flag value perror("file flag get failed"); newval = curval |
O
_WRONLY|
O
_APPEND; printf("%d\n&
浏览 3
提问于2011-02-23
得票数 1
1
回答
通过F_SETFL更改文件权限
file
、
unix
error has occurred"); printf("Read only attribute\n");case
O
_WRONLY: break;
浏览 2
提问于2012-11-27
得票数 0
回答已采纳
2
回答
原始I/
O
是否绕过驱动程序提供的部分或大部分服务?
linux
、
drivers
、
io
2012年9月9日由亚伯拉罕·西尔伯沙茨提出的操作系统概念raw I/
O
是否也绕过了驱动程序提供的部分或大部分服务? 驱动程序提供什么样的服务进行原始I/
O
旁路操作?如果我正确地理解了Stephen 这里和这里,那么原始I/
O
不会绕过驱动程序向顺序可寻址的设备提供的随机可访问性,而
浏览 0
提问于2018-10-07
得票数 1
回答已采纳
1
回答
O
_
DIRECT
到底是什么意思?
linux
、
file
如果我打开一个带有
O
_
DIRECT
标志的文件,是否意味着每当该文件的写入(阻塞模式)返回时,数据就在磁盘上?
浏览 5
提问于2016-12-21
得票数 12
回答已采纳
1
回答
在ext4中使用
O
_
DIRECT
打开()时,fsync()会做什么
file
、
ext4
、
fsync
我知道XFS不会同步元数据,即使正在写入的文件是用
O
_
DIRECT
打开的,并且文件的元数据发生了更改。但是对于ext4,我注意到MySQL支持
O
_
DIRECT
_NO_FSYNC,这意味着MySQL不会调用fsync(),而是让文件系统自己同步元数据。所以问题来了:如果我在ext4中用
O
_
DIRECT
open一个文件(比如
linux
内核版本5.8.0),在write()之后调用fsync(),fsync()会怎么做?接下来要问的另一个问题是:如果在ext4中用
O
浏览 18
提问于2021-02-02
得票数 1
1
回答
SSD IOPS在
linux
上,比缓冲的fio快得多。
linux
、
raid
、
performance
、
ssd
与我的期望相比,在随机I/
O
中的性能比较缓慢,我开始研究运行fio基准测试发生了什么。0.0%, 32=0.1%, 64=0.0%, >=64=0.0%但是,如果我使用
direct
=1选项(即绕过
linux
的缓冲区缓存),我将得到~ 40000 IOPS,这是我想要看到的。我还在两次运行时查看了iostat输出--这是使用
direct
=1时的情况: D
浏览 0
提问于2018-06-29
得票数 6
回答已采纳
1
回答
Linux
上POSIX AIO与libaio的区别?
linux
、
asynchronous
、
io
、
linux-kernel
、
aio
2.是否必须使用
O
_
DIRECT
标志?正如在中提到的,当使用libaio.Okay时,libaio在没有
O
_
DIRECT
的情况下工作得很好,但是: 根据R.Love的
Linux
编程书,只有使用
O
_
DIRECT
.But打开一个小程序(使用aio.h,链接到-lrt),才能在普通文件上支持
O
_
DIRECT
(我认为它是POSIX ),在没有
O
_
DIRECT
标志的打开文件上调用aio_write是没有问题
浏览 4
提问于2012-01-07
得票数 56
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
Linux I/O重定向详细介绍
深入理解 Linux的I/O 系统
详解direct Dstream
针对Linux的I/O虚拟化框架VirtIO
Linux 实现原理—I/O 处理流程与优化手段
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券