Sponsored Content
Top Forums UNIX for Advanced & Expert Users Does sync(2) block writes until completed? Post 302239897 by mschwage on Wednesday 24th of September 2008 04:28:10 PM
Old 09-24-2008
Not sync, really- but pdflush

I should mention that I'm not really concerned so much about sync but rather on pdflush itself. ...The mechanisms they use may be different. Anyway, I notice that if I modify the pdflush behavior with these kernel parameters:
Code:
vm.dirty_writeback_centisecs=100
vm.dirty_expire_centisecs=100

...it appears to affect my dd writes negatively; that is, if I loop the dd and run it over and over again, the time for dd to complete jumps on an erratic basis.

Here's what I'm executing:
Code:
while true; do
    echo -n ">>> New File >>>"; date +%r
    /usr/bin/time -f "%E" /tmp/doit
done

and /tmp/doit contains:
dd if=/dev/zero of=/var/tmp/bigfile$i bs=1024 count=40000 oflag=nonblock 2>/dev/null

Then in another window, I am modifying sysctl parameters while the while loop is running. First, the default settings:
Code:
sysctl -w vm.dirty_writeback_centisecs=500 ; sysctl -w vm.dirty_expire_centisecs=3000
sysctl -w vm.dirty_writeback_centisecs=100 ; sysctl -w vm.dirty_expire_centisecs=100
...observe times from the while loop.  These should be more "choppy"

The fact that the dd's more frequently take longer when the centisecs parameter is shortened lead me to believe that my app is blocking when it bumps into the disk flushing. The machine is otherwise quiescent, and the size of the write (40 Meg) should not be enough to trigger pdflush. It should happen every second, based on the sysctl settings.

Note that dd is not doing direct i/o or synchronous i/o. If I explicitly set those flags, it slows the write enormously. Note too that it doesn't matter if I use the "nonblock" flag or not... i/o behavior is the same.
-Mike
P.S. We don't have a syncer daemon. Also, while running my tests above, it appears to me that the effect of sync is nearly instantaneous...

Last edited by mschwage; 09-24-2008 at 05:42 PM..
 

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sh script that reads/writes based upon contents of a file

Hi everyone, Ive got a quick question about the feasibility and any suggestions for a shell script. I can use sh or ksh, doesnt matter. Basically, Ive got an output file from a db2 command that looks like so: SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 ... (3 Replies)
Discussion started by: rdudejr
3 Replies

2. Solaris

Sync to Green vs. Separate Sync

Hi all....I have a Sun Ultra2 that I want to use with my PC monitor. I have purchased an adapter that does not work and I was told I need to change my video card setting (if I can) to Separate Sync.....my Monitor product number ends in 1343......I am running SunOS 5.7 ......anyone have any ideas? ... (0 Replies)
Discussion started by: psantinello
0 Replies

3. UNIX for Dummies Questions & Answers

which process writes to file

Some process rewrites a file ( i'm hacked :) Can I somehow monitor which process does that? (2 Replies)
Discussion started by: hachik
2 Replies

4. Shell Programming and Scripting

Perl: FH and multiple writes

I found this logging subroutine on the net that I want to use but despite trying many things, I cannot figure out how to get the date in front of the logged text. Ideally what I'm looking for is a line that looks something like this: Wed Aug 20 18:17:29 PDT 2008 - my logging info here. my... (2 Replies)
Discussion started by: gctaylor
2 Replies

5. Solaris

Network writes contantly spiking in throughput

Hey guys First post... and im not exactly a solaris guru but here goes Ive setup a solaris 10 box with a raidz2 set of 6 disks... I have also setup Samba with open shares for some CIFs access... now my issue is that when i transfer large files to it the network performance contantly... (8 Replies)
Discussion started by: silicoon
8 Replies

6. Shell Programming and Scripting

Reading from a file a background program writes to

Hi! #!/usr/bin/env bash rm tmpcomm nc -v -u -l 444 | hexdump -b > tmpcomm while : do read l1 < tmpcomm read l2 < tmpcomm read l3 < tmpcomm read l4 < tmpcomm # do something doneI start netcat in the background and listen for an incoming conncetion. All incoming... (1 Reply)
Discussion started by: torax123
1 Replies

7. Shell Programming and Scripting

Help with script that reads and writes java console Minecraft

Hi I am looking for an easy way to lock game mode (0) for everyone included op on a Minecraft server. It can be a script that every time a player changes game to 1 the script changes back to 0. What the player writes is visible in the java console. I am not good at script programming and my... (0 Replies)
Discussion started by: MyMorris
0 Replies

8. Solaris

OpenBSM not catching all file writes

I have a custom auditing class configured for these events but it doesn't seem to be catching it when I do a "echo hey > test.txt" Any ideas on why that is? ---------- Post updated at 06:04 PM ---------- Previous update was at 05:47 PM ---------- Scratch this topic, it looks like it's because... (0 Replies)
Discussion started by: thmnetwork
0 Replies
GLCLIENTWAITSYNC(3G)						    OpenGL 3.3						      GLCLIENTWAITSYNC(3G)

NAME
glClientWaitSync - block and wait for a sync object to become signaled C SPECIFICATION
GLenum glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); PARAMETERS
sync The sync object whose status to wait on. flags A bitfield controlling the command flushing behavior. flags may be GL_SYNC_FLUSH_COMMANDS_BIT. timeout The timeout, specified in nanoseconds, for which the implementation should wait for sync to become signaled. DESCRIPTION
glClientWaitSync causes the client to block and wait for the sync object specified by sync to become signaled. If sync is signaled when glClientWaitSync is called, glClientWaitSync returns immediately, otherwise it will block and wait for up to timeout nanoseconds for sync to become signaled. The return value is one of four status values: o GL_ALREADY_SIGNALED indicates that sync was signaled at the time that glClientWaitSync was called. o GL_TIMEOUT_EXPIRED indicates that at least timeout nanoseconds passed and sync did not become signaled. o GL_CONDITION_SATISFIED indicates that sync was signaled before the timeout expired. o GL_WAIT_FAILED indicates that an error occurred. Additionally, an OpenGL error will be generated. NOTES
glClientWaitSync is available only if the GL version is 3.2 or greater. ERRORS
GL_INVALID_VALUE is generated if sync is not the name of an existing sync object. GL_INVALID_VALUE is generated if flags contains any unsupported flag. SEE ALSO
glFenceSync(), glIsSync() glWaitSync() COPYRIGHT
Copyright (C) 2010 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/. OpenGL 3.3 03/08/2011 GLCLIENTWAITSYNC(3G)
All times are GMT -4. The time now is 01:06 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy