Solved

Number of files in directory

Posted on 2002-07-21
5
218 Views
Last Modified: 2013-12-27
Hi

I am currently working on a product where I am importing files into a database. The files are being placed in that directory faster than I can import it. If the files go past a couple of thousands say 2000, then the system slows down, thus I need to know if there are a max number of files per directory is before the performance will be affected. I need to know what the max value of files is.

I am currently running on Solaris 8. System hardware: 2gigs of Ram, dual P3 800Mhz Intel system
0
Comment
Question by:RonaldMundell
5 Comments
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7167560
AFAIK there is no way to compute the **exact** amount of files allowed.
This depends on the filesystem, and the parameters used when it was created. The most important parameter is the number of inodes.
Use something like following to get the used parameters:

     mkfs -m /dev/dsk/c0t3d0s7

Then have a look at the nbpi= parameter, and check in the mkfs or newfs man-page how to interprete this value.
0
 
LVL 14

Accepted Solution

by:
chris_calabrese earned 20 total points
ID: 7169776
If you're using the default Sun UFS, the directory is kept in a linear list, which means that access time slows proportionately to the number of entries. How slow is too slow is of course, up to you.

But you may consider a strategy that places less files in each directory.

Here's a script that does such splitting...

#!/usr/bin/ksh
#
# Generate multi-level directory names so that we ensure
# no more than FACTOR files/directory over LEVELS levels
# of directories.
#
# With LEVELS=3 and FACTOR=100, we can deal with
# 10,000,000 files (FACTOR ^ (LEVELS+1)).
#
# Copyright (c) 2001 by Chris Calabrese
# (chris_calabrese@yahoo.com)
# The author grants permission to use/modify this program in
# any way as long as:
#   1. It is not resold for profit.
#   2. This copyright notice accompanies any distribution.
# All other rights reserved.
# Finally, the author makes no warantee of
# correctness or fitness for any purpose.
#
#
typeset -i LEVELS=3
typeset -i FACTOR=100

function path_of {
    print -r -- "$*" | cksum | read hash junk
    typeset -i i=0
    #
    # Hash is unsigned and ksh arithmatic is signed
    # so we need to deal with this before doing anything else
    #
    hash="$((hash / 2))"
    if [ "$hash" -lt 0 ]
    then    hash="$((0 - hash))"
    fi
    #
    # Generate a path that gives us
    # FACTOR subdirectories at each LEVEL
    #
    while [ "$i" -lt "$LEVELS" ]
    do  print -r -n -- "$((hash % FACTOR))/"
        hash="$((hash / FACTOR))"
        i="$((i+1))"
    done
    print -r -- "$*"
}

while [ "$#" -gt 0 ]
do      path_of "$1"
        shift
done
0
 

Author Comment

by:RonaldMundell
ID: 7172520
Hi All

I have not forgotten you. I am out of the office until friday. Then I will look at this.

Thank you
0
 
LVL 20

Expert Comment

by:tfewster
ID: 8094190
No comment has been added lately, so it's time to clean up this Topic Area.
I will leave a recommendation for this question in the Cleanup topic area as follows:

- Answered by chris_calabrese

Please leave any comments here within the next 7 days

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER !

tfewster
Cleanup Volunteer
0
 
LVL 5

Expert Comment

by:Netminder
ID: 8144376
Per recommendation, force-accepted.

Netminder
EE Admin
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Attention: This article will no longer be maintained. If you have any questions, please feel free to mail me. jgh@FreeBSD.org Please see http://www.freebsd.org/doc/en_US.ISO8859-1/articles/freebsd-update-server/ for the updated article. It is avail…
Using libpcap/Jpcap to capture and send packets on Solaris version (10/11) Library used: 1.      Libpcap (http://www.tcpdump.org) Version 1.2 2.      Jpcap(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html) Version 0.6 Prerequisite: 1.      GCC …
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now