Messages in this thread | | | Date | Tue, 3 Dec 2019 10:23:37 +0800 | From | Ming Lei <> | Subject | Re: AW: Slow I/O on USB media after commit f664a3cc17b7d0a2bc3b3ab96181e1029b0ec0e6 |
| |
On Fri, Nov 29, 2019 at 03:41:01PM +0100, Andrea Vai wrote: > Il giorno ven, 29/11/2019 alle 10.35 +0800, Ming Lei ha scritto: > > On Fri, Nov 29, 2019 at 08:57:34AM +0800, Ming Lei wrote: > > > > > [...] > > > > > Andrea, can you collect the following log when running the test > > > on current new(bad) kernel? > > > > > > /usr/share/bcc/tools/stackcount -K blk_mq_make_request > > > > Instead, please run the following trace, given insert may be > > called from other paths, such as flush plug: > > > > /usr/share/bcc/tools/stackcount -K t:block:block_rq_insert > > Attached, for new (patched) bad kernel. > > Produced by: start the trace script (with the pendrive already > plugged), wait some seconds, run the test (1 trial, 1 GB), wait for > the test to finish, stop the trace. > > The copy took ~1700 seconds.
See the two path[1][2] of inserting request, and path[1] is triggered 4358 times, and the path[2] is triggered 5763 times.
The path[2] is expected behaviour. Not sure path [1] is correct, given ext4_release_file() is supposed to be called when this inode is released. That means the file is closed 4358 times during 1GB file copying to usb storage.
Cc filesystem list.
[1] insert requests when returning to user mode from syscall
b'blk_mq_sched_request_inserted' b'blk_mq_sched_request_inserted' b'dd_insert_requests' b'blk_mq_sched_insert_requests' b'blk_mq_flush_plug_list' b'blk_flush_plug_list' b'io_schedule_prepare' b'io_schedule' b'rq_qos_wait' b'wbt_wait' b'__rq_qos_throttle' b'blk_mq_make_request' b'generic_make_request' b'submit_bio' b'ext4_io_submit' b'ext4_writepages' b'do_writepages' b'__filemap_fdatawrite_range' b'ext4_release_file' b'__fput' b'task_work_run' b'exit_to_usermode_loop' b'do_syscall_64' b'entry_SYSCALL_64_after_hwframe' 4358
[2] insert requests from writeback wq context
b'blk_mq_sched_request_inserted' b'blk_mq_sched_request_inserted' b'dd_insert_requests' b'blk_mq_sched_insert_requests' b'blk_mq_flush_plug_list' b'blk_flush_plug_list' b'io_schedule_prepare' b'io_schedule' b'rq_qos_wait' b'wbt_wait' b'__rq_qos_throttle' b'blk_mq_make_request' b'generic_make_request' b'submit_bio' b'ext4_io_submit' b'ext4_bio_write_page' b'mpage_submit_page' b'mpage_process_page_bufs' b'mpage_prepare_extent_to_map' b'ext4_writepages' b'do_writepages' b'__writeback_single_inode' b'writeback_sb_inodes' b'__writeback_inodes_wb' b'wb_writeback' b'wb_workfn' b'process_one_work' b'worker_thread' b'kthread' b'ret_from_fork' 5763
Thanks, Ming
| |