I do work with systems architecture (operating systems, network and storage plumbing). Strong experience (more than 20 years): prospecting, modeling, planning and implementing new solutions to provide resilient internet services, cost effective operational infrastructure, storage performance and data protection for highly available systems.
The filesystem utilization can be the problem?
It can be. On a full filesystem, the inodes and directories that you
have to write to may be on different portions of the disk, causing a
head seek.
I\’m pretty sure that all metadata operations (like create and unlink)
are synchronous on UFS, so those have to complete before the system call
returns. Are you running with or without logging on UFS?
Can that difference be structural(on the design of the two filesystems)?
Well, UFS (when not logging), maintains metadata in multiple (sometimes
fixed) locations on the disk. For a created file, you have to allocate
an inode from the free inodes, you have to create a directory entry in a
directory, and you have to link the inode to the directory. If any data
goes into the file, that\’s more allocation and linking that occur. The
inodes are at fixed locations on the disk. So this may be two or three
different writes to various locations on the disk, and the writes must
complete.
ZFS allows all of the metadata for a file to be written at the same time
(and locations) as other data. The directory updates, the inode
information and the like can all be written as one. I do not know if
any synchronicity requirements are held on ZFS. So the metadata may not
have actually been written when the system call returns.
Answered by MSL: As far as i know, solaris 10 by default uses logging.
And about the filesystem utilization,
i did the same test with an empty UFS filesystem,
and the results were the same: A high standard deviation.
It seems to me like a structural difference.
The filesystem utilization can be the problem?
It can be. On a full filesystem, the inodes and directories that you
have to write to may be on different portions of the disk, causing a
head seek.
I\’m pretty sure that all metadata operations (like create and unlink)
are synchronous on UFS, so those have to complete before the system call
returns. Are you running with or without logging on UFS?
Can that difference be structural(on the design of the two filesystems)?
Well, UFS (when not logging), maintains metadata in multiple (sometimes
fixed) locations on the disk. For a created file, you have to allocate
an inode from the free inodes, you have to create a directory entry in a
directory, and you have to link the inode to the directory. If any data
goes into the file, that\’s more allocation and linking that occur. The
inodes are at fixed locations on the disk. So this may be two or three
different writes to various locations on the disk, and the writes must
complete.
ZFS allows all of the metadata for a file to be written at the same time
(and locations) as other data. The directory updates, the inode
information and the like can all be written as one. I do not know if
any synchronicity requirements are held on ZFS. So the metadata may not
have actually been written when the system call returns.
Answered by MSL:
As far as i know, solaris 10 by default uses logging.
And about the filesystem utilization,
i did the same test with an empty UFS filesystem,
and the results were the same: A high standard deviation.
It seems to me like a structural difference.
Good site! Thanks.