Find the answer to your Linux question:
Results 1 to 5 of 5
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1

    Question performance downgrade on Redhat 6.x

    I'm porting programms to Redhat 6.x (6.1, 6.2, 6.3), and found that the performance downgrade is obvious. It cost 3 times what RedHat5.6 needs to transfer data (more than 100M) with TCP between processes on the same host.

    The hardware is almost same, so it should be an issue of configuration, but the tcp_mem, tcp_rmem, tcp_wmem are same.

    What's your suggestion about this?

    BTW: When receiving data with function "read(int fildes, void *buf, size_t nbyte)", if the nbyte is bigger than 1M, the performance downgrade is obvious on Redhat 6.x. This should also be caused by the system configuration, but I didn't get the root cause yet.

    Any suggestion is appreciated.
    Thanks very much

  2. #2
    Linux Guru Rubberman's Avatar
    Join Date
    Apr 2009
    I can be found either 40 miles west of Chicago, in Chicago, or in a galaxy far, far away.
    I haven't seen this, at least with RH clones such as CentOS and Scientific Linux, both of which I use extensively. Did you do a clean install, or just an upgrade from 5.6 to 6.x?
    Sometimes, real fast is almost as good as real time.
    Just remember, Semper Gumbi - always be flexible!

  3. #3
    The OS is installed by IT, they should not change the system default configurations. I will check the OS again.

    Thank you very much.

  4. $spacer_open
  5. #4
    tried ping (ping -c 10) today, redhat6.2 cost double time to get the response, this should be caused by the system configuration, but don't know which configuration will lead to this.

  6. #5
    This ticket is a bug of RedHat6.x, with specified socket receive/send buffer, the performance of receiving/sending data will be low.
    On RedHat6.x, once the SO_RCVBUF is set with 32683 or bigger, it costs 20 times to transfer the data than value 32682. NO such issue on RedHat5.6.

    The related codes:
    int nRecvBufLen = 32683;
    setsockopt( connfd, SOL_SOCKET, SO_RCVBUF, ( const char* )&nRecvBufLen, sizeof( int ) );

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts