�@�ł́A���ۂɂǂ̒��x�������x���Ⴄ�̂����ׂĂ݂悤�B�܂��A�v���O�������s�O�ɁA100Mbytes�̃t�@�C��������Ă����B�ȉ��̃R�}���h�����s����Ain�A�܂�R�s�[���̃t�@�C�����ł���B
dd if=/dev/random of=in bs=512 count=204800
�@mmap(2)�́u�t�@�C�����������Ƀ}�b�s���O�v������̂��Bout�A�܂�R�s�[��Ƃ���100Mbytes�̃t�@�C������邱�Ƃ��Y��Ă͂����Ȃ��B�ȉ��̃R�}���h�����s���Ăق����B���̒i�K��in��out�ɃR�s�[����ƁA�R�s�[�v���O�����������ɐ������Ă��邩�ǂ������m�F�ł��Ȃ��̂Œ��ӂ��Ăق����B�ŏ���dd(1)�R�}���h���g���āA�ł��ꂼ��ʂɃt�@�C�����쐬����B
dd if=/dev/random of=out bs=512 count=204800
�@�v���O�����Ńt�@�C���̏��������������邱�Ƃ��ł��邪�A�\�[�X�R�[�h�����G�ɂȂ�̂ō���͎~�߂Ă������B�܂�mmap(2)���ǂ��������̂Ȃ̂�������łق����B
�@���̏�ԂŁAin��out�̂��ꂼ��̃n�b�V���l�����߂�ƁA�l�͈قȂ������̂ɂȂ��Ă���͂����B
% md5 in out MD5 (in) = 4b5c11779d7f6d9ada20a308c1b15090 MD5 (out) = ff76dfcfd807c3dd3fa645fde5968704 %
�@�t�@�C���̃R�s�[������������ōĂуn�b�V���l���r����ƁA���̂悤�ɓ����l�ɂȂ�͂����B
% md5 in out MD5 (in) = 4b5c11779d7f6d9ada20a308c1b15090 MD5 (out) = 4b5c11779d7f6d9ada20a308c1b15090 %
�@�������x���r�������ʂ��\1�̒ʂ�B�����ł͂��ꂼ��R���p�C�����1��R�}���h�����s���āA���̌��5����s���āA���ꂼ��̏������Ԃ̕��ϒl�������Ă���B
�v���O�����̃t�@�C���� | �����ɂ����������ώ��ԁi�P�ʁ��b�j |
---|---|
copy-fgetc-fputc.c | 1.42 |
copy-read-write.c | 1.40 |
copy-mmap.c | 0.30 |
�\1�@100Mbytes�̃t�@�C�����R�s�[����3��ނ̃v���O���������ꂼ�ꏈ��������������܂łɂ����������� |
�@mmap(2)���g�����T���v���́Aread(2)/write(2)��fgetc(2)/fputc(2)���g�������̂ɔ�ׂ�4�`5�{�����ɓ��삵�Ă��邱�Ƃ�������B���|�I�ȑ��x�����B�����ł̓V���v���Ɏ��s���x�����ɒ��ڂ��Ă��邪�A����mmap(2)���g���ƁA�������̎g�p�ʂ�X�P�[���r���e�B�Ȃǂ��܂��܂ȖʂŃ����b�g������ł���B
�@�ł͂Ȃ�mmap(2)���g���Ə������x���オ��̂��B������u�J�[�l���ƃR�s�[�v���O�����̊ԂŃf�[�^�̃R�s�[���������Ȃ�����v�Ɛ����ł���Bmmap(2)���g���ƁA�f�[�^���������[�U�[�����h�փR�s�[���鑀�삪�������Ȃ��̂��B
�@copy-read-write.c���ɍl����ƕ�����₷���B�V�X�e���R�[���́A�����������K�v�ȂƂ��ɁA�������������J�[�l���ɏ������˗������i�ł���Ƃ������Ƃ���1���Ő��������Bcopy-read-write.c�ł�read(2)��write(2)��2��ނ̃V�X�e���R�[���𗘗p���Ă���B�����2��ނ̃V�X�e���R�[���́A�������[�h�œ��삵�A�ǂݏ�������f�[�^����������z��b�ɃR�s�[����B���炩���ߗp�ӂ��Ă�����100Mbytes�̔z�B���̃R�s�[�悪��肾�B�t�@�C��in�̃f�[�^����x�A�R�s�[�v���O�����A�܂胆�[�U�[�����h�œ��삷��v���O�����̔z��փR�s�[���Ă���B���ꂪ�������x��ቺ�����Ă��錴�����B
�@mmap(2)�̓t�@�C�����������Ƀ}�b�s���O���Ă��邪�A�f�[�^���v���O�������̕ϐ���z��ɃR�s�[����K�v���Ȃ��d�g�݂ɂȂ��Ă���B���z�������̎d�g�݂����p���Ď������Ă���@�\�ł���A�������R�ȕ��@�Ŏ��������������}�b�s���O�@�\�ł���B
�@�������x���r�����Ƃ���ŁA���x��truss(1)���g���āA�ǂ̃V�X�e���R�[�����Ă�Ă��邩�A���ꂼ�ꉽ��Ă�Ă���̂��ׂĂ݂悤�Bcopy-fgetc-fputc.c�ł�read(2)��write(2)�����ꂼ��3200��قnjĂ�Ă��邱�Ƃ�������B12��ނ̃V�X�e���R�[�����Ăяo���Ă���A�Ăяo���̍��v��6435�B
syscall seconds calls errors readlink 0.000045816 1 0 lseek 0.000014527 1 0 mmap 0.000146526 8 0 open 0.031803904 5 1 close 0.000033314 2 0 fstat 0.000090725 3 0 write 0.060363421 3200 0 break 0.000016553 1 0 access 0.000025911 1 0 sigprocmask 0.000119290 8 0 munmap 0.000034431 2 0 read 0.114219237 3203 0 ------------- ------- ------- 0.206913655 6435 1
�@����copy-read-write.c�ׂĂ݂悤�Bread(2)��write(2)�̌Ăяo���͂��ꂼ��3���1�Bread(2)��2�̓R�s�[�ȊO�̏����ŌĂ�Ă�����̂Ȃ̂ŁA�����I�ɃR�s�[�̂��߂̃V�X�e���R�[���Ăяo����1���B10��ނ̃V�X�e���R�[�����Ăяo���Ă���A�Ăяo���̍��v��29��B��قǂ̗�Ɣ�ׂ�ƁA�V�X�e���R�[���̌Ăяo�������ɏ��Ȃ����Ƃ�������B
syscall seconds calls errors lseek 0.000015854 1 0 mmap 0.000121665 6 0 open 0.000121663 5 1 close 0.000035689 2 0 fstat 0.000035339 1 0 write 1.086137903 1 0 access 0.000025492 1 0 sigprocmask 0.000128857 8 0 munmap 0.000018718 1 0 read 0.130443603 3 0 ------------- ------- ------- 1.217084783 29 1
�@�Ō��copy-mmap.c�ׂĂ݂�B9��ނ̃V�X�e���R�[�����Ăяo���Ă���A�Ăяo���̍��v��29��Bmmap(2)���Ăяo�����ق���2�̃T���v���ɔ�ׂ�2�����ƁA�V���{���b�N�����N��ǂݎ��readlink(2)���Ăяo���Ă��Ȃ����Ƃ������Acopy-read-write.c�̌X���ɂ悭���Ă���B
syscall seconds calls errors lseek 0.000006705 1 0 mmap 0.000065791 8 0 open 0.000046864 5 1 close 0.000014039 2 0 fstat 0.000012781 1 0 access 0.000010127 1 0 sigprocmask 0.000087791 8 0 munmap 0.000007054 1 0 read 0.000042673 2 0 ------------- ------- ------- 0.000293825 29 1
�@�܂�f�[�^���t�@�C������R�s�[�v���O�����ɃR�s�[���A�������炳��Ƀt�@�C���ɏ����o���Ƃ����������A�R���s���[�^�ɏd�����S���|���Ă��邱�Ƃ�������B�V�X�e���R�[���̌Ăяo�������炷�A�Ƃ����̂͏������\�������グ������1�ł���A����ɂ���1�A�Ȃ�ׂ��f�[�^�̃R�s�[���������Ȃ��悤�ɂ���Ƃ������������Ƃ������Ƃ��o���Ă��������B
�@mmap(2)�͔�r�I�ȒP�Ɏg���đ傫�Ȍ��ʂ����҂ł��閣�͓I�ȃV�X�e���R�[�����B����ȍ~���炭�́Ammap(2)�̎g�������Љ�Ȃ���Ammap(2)�̂悤�ɌĂяo�������ŗǂ����ʂ���V�X�e���R�[��������Ƃ������Ƃ������Ă������Ǝv���B
�@����Љ���T���v���v���O�������g���āA�ǎ��������{����Ƃ��́A�ȉ���2�_�ɒ��ӂ��Ă������������B
�@�܂��A���z���̃Q�X�gOS�ŃT���v���v���O���������s���A�������Ԃ��r����ƍ��������ʂƑ傫���H���Ⴄ�\��������B���z���̉��z�n�[�h�f�B�X�N�́A���ۂ̃n�[�h�f�B�X�N��OS���C���X�g�[�������Ƃ��Ɣ�ׂ�ƈقȂ铮���������邱�Ƃ����邩�炾�B�����͉��z���łȂ��A���ۂ̃n�[�h�E�F�A��OS���C���X�g�[���������Ŏ��{���������ǂ��B
�@Solaris 11��FreeBSD 9�����ڂ��Ă���t�@�C���V�X�e��ZFS�iZettabyte File System�j������A�d���r���@�\�idedup�j�𗘗p���Ă���ƁA����f�[�^�̃R�s�[����u�Ŋ������邱�Ƃ�����B����̃T���v���v���O������ʂ��Ēm�肽���̂́Aread(2)��write(2)��g�ݍ��킹���v���O�����ƁAmmap(2)�����p�����v���O�����ŏ������\���ǂ̒��x�قȂ�̂��Ƃ������Ƃł���B�t�@�C���V�X�e���̋@�\�������āA�R�s�[����u�ōς�ł��܂��Ă͌����ł��Ȃ��BUFS�iUnix File System�j��Ŏ������邩�A�d���r���@�\�∳�k�@�\�Ȃǂ��ɂ��Ď����ׂ����낤�B
�@�����āA����͏Љ�Ȃ��������Amemcpy(3)�Ƃ����W�����C�u�������������Ă݂�Ɨǂ����낤�B���̊��́A�w�肵���������̈�̃f�[�^���ق��̗̈�ɃR�s�[����@�\�����Bcopy-mmap.c�ɁAmemcpy(3)�Ń������̈�̃f�[�^���R�s�[����@�\��t��������ƁA�������x���啝�ɏオ��\��������B�����memcpy(3)���������̏������H�v���č�������B�����Ă���̂ł͂Ȃ��A�v���Z�b�T�̋@�\�𗘗p���Ă��邽�߂��B����̓n�[�h�E�F�A�ɂȂ�ׂ�����Ȃ��悤�ɂ��邽�߁A�T���v���v���O�����ł�memcpy(3)�͗��p���Ȃ��������A���ۂɎ����āA�g�����Ƃ��̌��ʂ�m���Ă����������ǂ����낤�B
�@�ǎ����ɗ��p�������AOS���Ƃ̃R�}���h�̈Ⴂ�Ȃǂ��A�ڑ�2���ɂ܂Ƃ߂Ă���B��������Q�l�ɂ��Ă������������B
BSD�R���T���e�B���O������Ў�����^�I���O�X��\�����
�㓡 ��n
��IT�ւ̊�e�AMYCOM�W���[�i���ɂ�����j���[�X���M�̂ق��A�A�v���P�[�V�����J����V�X�e���\�z�A�w�������� FreeBSD�r�M�i�[�Y�o�C�u���x�wD����p�[�t�F�N�g�K�C�h�x�wUNIX�{�i�}�X�^�[�@��b�ҁ`Linux��FreeBSD���g�����Ȃ����߂̑����`�x�Ȃǒ��������B
Copyright © ITmedia, Inc. All Rights Reserved.