Messages in this thread | | | From | Heinz Mauelshagen <> | Subject | Re: [patch] dynamic buffer cache hash table size | Date | Sat, 23 Jan 1999 0:00:23 MET |
| |
> > On Fri, 22 Jan 1999, Heinz Mauelshagen wrote: > > > The bad performance nearly stays the same, when the buffermem is large 8*( > > Only adding my artificial limitation for the buffermem to limit it > > to for eg. 20M is almost fine. > > Ok, now please do a crazy real hack test. > > I want you alloc 1000 pages (4mbyte of RAM) for the buffer cache hash. If > also that way you won't see differences I will be interested in other > test. > > Please start with the last patch applyed. You'll find a function called > my new buffer_hash_init() near line 1500 of linux/fs/buffers.c > > Plese edit this code: > > mem_pages = (mem_pages + (1<<9)) >> 9; > > and modify it to: > > mem_pages = 1000;
Have to do that test run later, but have a look at the already existing one below. Will send you the output later
> > Then recompile and reboot. If you'll still see bad performances with the > memory full of buffers could you please append="profile=4" in lilo.conf? > > Then reboot and tell me which are the most run functions (maybe > shrink_mmap?). >
Ingo Molnar asked me just today for a profile. Most of the time is wasted in sync_buffers.
20-30 ticks per command invocation with 8M buffermem and 500-1000!!! ticks with 120M buffermem.
This is not with your 4M hack!!! I'll send the output with 4M hack soon.
Regards, Heinz
57697 total 0.0801 25049 sync_buffers 54.4543 4960 refill_freelist 27.5556 2625 si_meminfo 19.8864 2181 try_to_free_buffers 16.0368 1856 __wake_up 23.2000 1457 proc_root_lookup 4.7928 1131 invalidate_buffers 8.8359 1108 find_inode 21.3077 1100 schedule 1.2673 841 proc_lookup 3.7545 699 do_select 1.2135 672 system_call 12.0000 651 find_buffer 9.5735 617 vgacon_scroll 1.1598 556 vgacon_set_origin 4.0882 500 __pollwait 2.5000 485 sys_select 0.4225 432 __get_free_pages 0.7826 412 d_lookup 1.8727 393 sys_ioctl 1.0452 342 vgacon_save_screen 3.8864 335 do_gettimeofday 2.9911 313 make_request 0.2038 298 ext2_find_entry 0.4331 287 add_timer 0.7474 266 do_anonymous_page 1.5833 258 get_new_inode 0.8487 235 kmalloc 0.5817 218 unix_poll 1.7581 210 free_pages 0.7500 208 lookup_dentry 0.4727 206 free_wait 1.3205 191 d_alloc 0.5134 188 do_wp_page 0.3113 181 kmem_cache_alloc 0.5387 176 unplug_device 2.0952 169 schedule_timeout 1.2071 164 aic7xxx_isr 0.1168 163 open_namei 0.2122 160 wakeup_bdflush 1.1111 147 filemap_nopage 0.1810 144 __switch_to 0.7347 129 unix_ioctl 1.0403 125 sys_gettimeofday 0.8224 118 restore_all 7.8667 111 max_select_fd 0.6768 108 kfree 0.2269 103 permission 0.3962 97 file_read_actor 1.2125 93 proc_get_inode 0.3577 89 get_empty_filp 0.3771 87 sock_poll 2.1750 85 filp_open 0.3427 84 page_fault 7.0000 82 real_lookup 0.6613 80 proc_read_inode 0.2740 74 clean_inode 0.7708 72 add_request 0.1017 68 __free_page 0.2931 66 do_follow_link 0.5000 64 iget 0.4103 63 pipe_poll 0.7875 63 insert_into_queues 0.2316 63 getblk 0.1167 62 sys_open 0.3690 62 kmem_cache_free 0.1505 62 handle_IRQ_event 0.4429 57 fput 0.7917 56 ll_rw_block 0.0864 55 block_write 0.0386 53 sys_write 0.1815 52 sock_ioctl 1.3000 52 proc_statfs 0.4815 50 handle_mm_fault 0.1025 49 do_page_fault 0.0592 48 sock_readv_writev 0.3243 47 file_ioctl 0.2217 47 dput 0.1433 45 block_read 0.0342 44 unix_shutdown 0.3667 44 sys_nanosleep 0.1196 44 sync_old_buffers 0.1038 42 unix_stream_recvmsg 0.0439 42 init_proc_fs 1.7500 40 get_unused_fd 0.2222 39 unix_stream_sendmsg 0.0617 38 si_swapinfo 0.2436 38 put_unused_buffer_head 0.5000 36 zap_page_range 0.0796 36 sys_read 0.1385 35 ret_from_sys_call 2.0588 35 ext2_permission 0.1535 34 proc_permission 0.1809 34 del_timer 0.3864 32 remove_from_queues 0.1067 32 do_no_page 0.1176 30 refile_buffer 0.1829 30 mark_buffer_uptodate 0.3571 30 clear_page_tables 0.1415 29 vt_console_print 0.0382 27 math_state_restore 0.4821 26 d_delete 0.2407 25 do_fork 0.0115 25 d_rehash 0.3289 24 put_write_access 2.0000 24 copy_page_range 0.0469 23 sys_llseek 0.0676 23 getname 0.1597 23 do_autoconfig 0.1742 22 reserved_lookup 0.3056 22 get_unused_buffer_head 0.1341 21 do_con_trol 0.0049 21 do_bottom_half 0.1250 21 __release_sock 0.1641 20 get_empty_inode 0.1064 20 find_vma 0.2000 20 do_mmap 0.0202 19 strncpy_from_user 0.2375 19 grow_inodes 0.0448 19 get_hash_table 0.5938 19 device_not_available 0.3167 18 exec_modprobe 0.0484 18 d_alloc_root 0.3000 18 cached_lookup 0.2368 17 vt_ioctl 0.0023 17 number 0.0373 17 error_code 0.3269 16 tcp_listen_poll 0.1739 16 sys_wait4 0.0173 16 pipe_ioctl 0.4000 16 ext2_update_inode 0.0200 16 ext2_count_free 0.2000 16 d_instantiate 0.3636 16 cp_new_stat 0.0563 16 copy_strings 0.0367 16 alloc_skb 0.0606 16 __namei 0.1739 15 shrink_dcache_memory 1.2500 15 copy_files 0.0421 15 bdflush 0.0247 14 sys_sigprocmask 0.0376 14 sync_inodes 0.0479 14 ret_with_reschedule 0.8750 13 sys_brk 0.0406 13 proc_delete_dentry 0.4643 13 inet_shutdown 0.1121 13 do_generic_file_read 0.0084 13 __wait_on_buffer 0.0433 12 shm_unuse 0.1364 12 set_modem_info 0.0469 12 select_dcache 0.0448 12 rs_break 0.1579 12 merge_segments 0.0330 12 exit_notify 0.0201 12 create_buffers 0.0238 11 sys_close 0.0887 11 synchronize_bh 0.1447 11 set_writetime 0.1719 11 set_selection 0.0070 11 reset_terminal 0.0205 11 ext2_getblk 0.0198 11 __get_request_wait 0.0229 11 __brelse 0.2115 10 sys_newfstat 0.0595 10 init_buffer 0.1667 10 grow_buffers 0.0379 9 sync_block 0.0511 8 wake_up_process 0.0500 8 sys_nfsservctl 0.0645 8 sock_sendmsg 0.0455 8 inode_getblk 0.0171 8 do_munmap 0.0139 8 clear_user 0.1111 8 __global_restore_flags 0.1111 8 __get_user_2 0.2857 7 sys_newstat 0.0473 7 sys_lseek 0.0312 7 sprintf 0.0018 7 sock_alloc_send_skb 0.0417 7 set_serial_info 0.0061 7 insert_vm_struct 0.0197 7 ext2_check_dir_entry 0.0389 7 __get_user_4 0.2917 6 update_atime 0.0600 6 sock_wmalloc 0.0789 6 sock_recvmsg 0.0349 6 rs_interrupt_single 0.0063 6 get_serial_info 0.0294 6 get_irq_list 0.0179 6 ext2_readdir 0.0042 6 close_fp 0.0600 6 __kfree_skb 0.0366 5 vm_enough_memory 0.0391 5 unix_dgram_sendmsg 0.0082 5 tcp_poll 0.0208 5 tcp_find_established 0.0735 5 sys_writev 0.0245 5 sys_sigaction 0.0195 5 sock_write 0.0305 5 sock_read 0.0312 5 simple_strtoul 0.0329 5 set_blocksize 0.0132 5 old_mmap 0.0179 5 kmem_cache_grow 0.0054 5 generic_file_read 0.0391 5 find_vma_prev 0.0260 5 ext2_new_block 0.0021 5 do_exit 0.0076 5 brw_page 0.0053 4 sock_rfree 0.2000 4 locks_remove_posix 0.0270 4 load_elf_binary 0.0014 4 iput 0.0071 4 inet_poll 0.0909 4 get_unmapped_area 0.0370 4 get_modem_info 0.0250 4 ext2_check_blocks_bitmap 0.0059 4 de_get 0.3333 4 __udelay 0.0455 4 __put_user_1 0.2000 3 tcp_readable 0.0179 3 sys_newlstat 0.0203 3 sys_munmap 0.0259 3 sys_getdents 0.0082 3 sock_wfree 0.0938 3 sock_release 0.0375 3 show_net_buffers 0.0441 3 release 0.0082 3 put_page 0.0750 3 printk 0.0077 3 print_hostbyte 0.0268 3 mod_timer 0.0074 3 kfree_skbmem 0.0441 3 ip_getsockopt 0.0033 3 get_kstat 0.0050 3 generic_file_mmap 0.0183 3 flush_old_exec 0.0063 3 ext2_read_inode 0.0031 3 ext2_alloc_block 0.0093 3 exit_mmap 0.0112 3 do_syslog 0.0048 3 do_readv_writev 0.0060 3 do_pipe 0.0084 3 default_llseek 0.0250 3 change_speed 0.0029 3 bread 0.0221 3 __put_user_2 0.1071 3 __generic_copy_to_user 0.0500 2 unmap_fixup 0.0069 2 unix_stream_write_space 0.0312 2 timer_bh 0.0022 2 sys_fstat 0.0119 2 sys_access 0.0079 2 sync_supers 0.0161 2 strtok 0.0200 2 startup_32 0.0122 2 setup_frame 0.0043 2 sel_pos 0.0357 2 scsicam_bios_param 0.0085 2 rs_unthrottle 0.0185 2 rs_throttle 0.0217 2 ret_from_exception 0.1250 2 restore_sigcontext 0.0050 2 reschedule 0.1667 2 put_dirty_page 0.0054 2 prune_dcache 0.0089 2 memcpy_toiovec 0.0200 2 load_elf_interp 0.0029 2 is_read_only 0.0385 2 init_private_file 0.0208 2 get_process_array 0.0125 2 get_pid 0.0066 2 fs_may_remount_ro 0.0250 2 free_page_and_swap_cache 0.0208 2 flush_signal_handlers 0.0333 2 filldir 0.0152 2 ext2_free_blocks 0.0027 2 ext2_file_write 0.0017 2 ext2_bmap 0.0034 2 count 0.0455 2 copy_thread 0.0098 2 aic7xxx_setup 0.0023 2 __wait_on_page 0.0068 2 __get_user_1 0.1000 1 write_inode_now 0.0041 1 vcs_scr_writew 0.0192 1 vc_resize 0.0009 1 unix_gc 0.0009 1 unix_dgram_recvmsg 0.0030 1 try_to_free_inodes 0.0104 1 trunc_indirect 0.0014 1 trunc_direct 0.0032 1 sys_unlink 0.0043 1 sys_time 0.0312 1 sys_stat 0.0068 1 sys_setpgid 0.0042 1 sys_personality 0.0061 1 sys_newuname 0.0086 1 sys_execve 0.0074 1 sys_dup2 0.0024 1 sys_chdir 0.0068 1 sync_indirect 0.0071 1 sync_iblock 0.0109 1 start_tty 0.0069 1 sock_wake_async 0.0109 1 sock_fasync 0.0037 1 shrink_dcache_sb 0.0034 1 setup_arg_pages 0.0037 1 set_mtrr_done 0.0156 1 set_device_ro 0.0114 1 send_sig_info 0.0015 1 search_binary_handler 0.0035 1 scsi_proc_info 0.0005 1 save_i387 0.0093 1 rs_write_room 0.0357 1 rs_start 0.0147 1 rs_chars_in_buffer 0.0625 1 ret_from_intr 0.0312 1 request_module 0.0025 1 release_segments 0.0357 1 read_exec 0.0027 1 read_284x_seeprom 0.0007 1 put_filp 0.0192 1 proc_delete_inode 0.0227 1 pipe_write 0.0018 1 pipe_read 0.0027 1 new_page_tables 0.0049 1 n_tty_receive_buf 0.0003 1 memcpy_tokerneliovec 0.0125 1 memcpy_fromiovec 0.0100 1 locks_remove_flock 0.0069 1 load__block_bitmap 0.0027 1 interruptible_sleep_on 0.0057 1 insert_file_free 0.0250 1 in_group_p 0.0156 1 grab_task 0.0076 1 get_root_array 0.0023 1 get_hardblocksize 0.0278 1 get_fops 0.0093 1 generic_readpage 0.0071 1 forget_segments 0.0250 1 ext2_get_group_desc 0.0069 1 ext2_file_lseek 0.0076 1 ext2_delete_entry 0.0086 1 ext2_add_entry 0.0013 1 exit_sighand 0.0119 1 do_sigaction 0.0029 1 do_setitimer 0.0034 1 do_execve 0.0021 1 csi_X 0.0076 1 cp_old_stat 0.0045 1 copy_segments 0.0069 1 con_font_op 0.0013 1 clear_inode 0.0125 1 block_getblk 0.0015 1 bcopy 0.0250 1 bad_get_user 0.1250 1 avl_rebalance 0.0027 1 array_read 0.0018 1 __mark_inode_dirty 0.0104 1 __global_cli 0.0033 1 __generic_copy_from_user 0.0167
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Systemmanagement Entwicklungsbereich 2 Deutsche Telekom AG Entwicklungszentrum Darmstadt Heinz Mauelshagen Otto-Roehm-Strasse 71c Postfach 10 05 41 mge@ez-darmstadt.telekom.de 64205 Darmstadt Germany +49 6151 886-425 FAX-386 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |