Hey Leif,

When using :fsync-interval, the actual calls to .force() on the underlying 
ByteBuffers occur on another thread, making it effectively a background 
process.  This is contrasted with :fsync-threshold, which will 
synchronously call fsync when the write threshold is hit.  Note that if the 
fsync-interval is less than the time it takes to actually fsync, it will 
simply continuously fsync at whatever pace it can.

If you'd like to verify, I suggest using strace.

Zach

On Sunday, March 9, 2014 6:54:50 PM UTC-7, Leif wrote:
>
> Hi, Zach.
>
> I was trying to benchmark at different values of the :fysnc-* parameters, 
> and I noticed that it didn't matter what value of :fsync-interval I set, 
> the performance was constant, and about what it is with both :fsync-put? 
> and :fsync-take? disabled.
>
> Any suggestions on how to test if data is actually being synced to disk at 
> my specified interval?
>
> Please forgive my suspicious nature,
> Leif
>
> On Friday, March 7, 2014 4:21:44 PM UTC-5, Zach Tellman wrote:
>>
>> I added the above-described features a few weeks back, but only got 
>> around to marking 0.1.1 today.  Fsync batching is described at the end of 
>> the README, let me know if you have any questions.
>>
>> On Friday, February 7, 2014 11:52:11 AM UTC-8, Zach Tellman wrote:
>>>
>>> Hi Bob,
>>>
>>> Right now the API only allows for single puts, and fsyncing is 
>>> all-or-nothing.  However, this is just an artifact of my major use case for 
>>> the library, which relies on upstream batching of tasks.  I'm planning an 
>>> 0.1.1 release which has an explicit `sync` method, and support for 
>>> sync-intervals (i.e. sync twice a second) and sync-thresholds (i.e. sync 
>>> every ten puts or takes).  The use case you describe could be achieved by 
>>> disabling automatic syncing, and doing a series of puts and takes followed 
>>> by a call to `sync`.
>>>
>>> If you have thoughts or suggestions on how this can be more useful for 
>>> you, please let me know.
>>>
>>> Zach
>>>
>>>
>>> On Fri, Feb 7, 2014 at 5:26 AM, Bob Hutchison <hutch...@recursive.ca>wrote:
>>>
>>>>
>>>> On Feb 6, 2014, at 6:45 PM, Zach Tellman <za...@factual.com> wrote:
>>>>
>>>> At Factual we get a lot of data thrown at us, and often don't have 
>>>> control over the rate at which it comes in.  As such, it's preferable that 
>>>> our buffer isn't bounded by the process' memory, since a temporary blip in 
>>>> throughput may cause GC pauses, OOM exceptions, and other things that will 
>>>> only exacerbate the problem.  It's also preferable that if the process 
>>>> dies, we won't lose any data which hasn't yet escaped the process.  A 
>>>> disk-backed queue satisfies both of these requirements.
>>>>
>>>> As such, I'm happy to announce that we're open sourcing 
>>>> 'durable-queue': https://github.com/Factual/durable-queue.  It's a 
>>>> small, fast, pure-Clojure implementation that in our production systems is 
>>>> responsible for processing billions of entries daily.  We believe it has 
>>>> broad applications, and are excited to see how others will use it.
>>>>
>>>>
>>>> What excellent timing! I’ve been looking at ZeroMQ, RabbitMQ, and Kafka 
>>>> for the last week or so. ZMQ is awfully attractive for what I’m trying to 
>>>> do, but there are a few things it doesn’t do that I need done. I had begun 
>>>> thinking of building something similar on top of Redis.
>>>>
>>>> You mention the idea of batching to reduce the impact of fsync. Is 
>>>> there an API for batching puts? Is there a way to batch a complete! and 
>>>> put! new tasks to the queue?
>>>>
>>>> One pattern that keeps coming up is:
>>>>    - take a single task from the queue
>>>>    - execute the task, which might generate a set of new tasks to be 
>>>> queued on the same queue (and likely on other queues too)
>>>>    - signal completion, and put the new tasks
>>>>
>>>> Cheers,
>>>> Bob
>>>>
>>>>
>>>> Zach
>>>>
>>>> P.S. If this sort of work is interesting to you, Factual is hiring: 
>>>> https://groups.google.com/forum/#!searchin/clojure/factual/clojure/8bPIEnNpfyQ/lvv-9gkVozAJ
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clo...@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+u...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Clojure" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to clojure+u...@googlegroups.com.
>>>>
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clo...@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+u...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> --- 
>>>> You received this message because you are subscribed to a topic in the 
>>>> Google Groups "Clojure" group.
>>>> To unsubscribe from this topic, visit 
>>>> https://groups.google.com/d/topic/clojure/4tZFWdMKvjw/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to 
>>>> clojure+u...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to