bcache performance: is all IO serialized by check_should_bypass()?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello all,

Looking at cached_dev_make_request() (the queue->make_request_fn 
callback), it sounds like every bio is passed through 
check_should_bypass(), which appears to spinlock dc->io_lock for every 
bio during sequential task analysis.

If so, then this prevents multiprocessor IO parallelism by requiring that 
the lock be held for every IO and could cause cache line bouncing of the 
lock between sockets.

I'm soliciting feedback about converting hlist_for_each_entry to 
hlist_for_each_entry_rcu and related functions:

http://lwn.net/Articles/264090/
https://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/x490.html

Has anyone already tried this?  

Is the serialization caused by check_should_bypass() necessary in some 
less than obvious way such that it might cause other synchronization 
issues?

Are there any data integrity concerns here that I am missing?

Any other thoughts or ideas on the subject would be greatly appreciated!

-Eric

--
Eric Wheeler, President           eWheeler, Inc. dba Global Linux Security
888-LINUX26 (888-546-8926)        Fax: 503-716-3878           PO Box 25107
www.GlobalLinuxSecurity.pro       Linux since 1996!     Portland, OR 97298
--
To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM Kernel]     [Linux Filesystem Development]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux