2.12.5.8. SCO UNIX and OpenServer 5.0.x Notes
The current port is tested only on sco3.2v5.0.5, sco3.2v5.0.6,
and sco3.2v5.0.7 systems. There has also been progress on a
port to sco3.2v4.2. Open Server 5.0.8 (Legend) has native
threads and allows files greater than 2GB. The current maximum
file size is 2GB.
We have been able to compile MySQL with the following
configure command on OpenServer with
gcc 2.95.3.
CC=gcc CXX=gcc ./configure --prefix=/usr/local/mysql \
--enable-thread-safe-client --with-innodb \
--with-openssl --with-vio --with-extra-charsets=complex
gcc is available at
ftp://ftp.sco.com/pub/openserver5/opensrc/gnutools-5.0.7Kj.
This development system requires the OpenServer Execution
Environment Supplement oss646B on OpenServer 5.0.6 and oss656B
and The OpenSource libraries found in gwxlibs. All OpenSource
tools are in the opensrc
directory. They
are available at
ftp://ftp.sco.com/pub/openserver5/opensrc/.
We recommend using the latest production release of MySQL.
SCO provides operating system patches at
ftp://ftp.sco.com/pub/openserver5 for
OpenServer 5.0.[0-6] and
ftp://ftp.sco.com/pub/openserverv5/507 for
OpenServer 5.0.7.
SCO provides information about security fixes at
ftp://ftp.sco.com/pub/security/OpenServer for
OpenServer 5.0.x.
The maximum file size on an OpenSever 5.0.x system is 2GB.
The total memory which can be allocated for streams buffers,
clists, and lock records cannot exceed 60MB on OpenServer
5.0.x.
Streams buffers are allocated in units of 4096 byte pages,
clists are 70 bytes each, and lock records are 64 bytes each,
so:
(NSTRPAGES * 4096) + (NCLIST * 70) + (MAX_FLCKREC * 64) <= 62914560
Follow this procedure to configure the Database Services
option. If you are unsure whether an application requires
this, see the documentation provided with the application.
Log in as root
.
Enable the SUDS driver by editing the
/etc/conf/sdevice.d/suds
file. Change
the N
in the second field to a
Y
.
Use mkdev aio
or the Hardware/Kernel
Manager to enable support for asynchronous I/O and relink
the kernel. To allow users to lock down memory for use
with this type of I/O, update the aiomemlock(F) file. This
file should be updated to include the names of users that
can use AIO and the maximum amounts of memory they can
lock down.
Many applications use setuid binaries so that you need to
specify only a single user. See the documentation provided
with the application to determine whether this is the case
for your application.
After you complete this process, reboot the system to create a
new kernel incorporating these changes.
By default, the entries in
/etc/conf/cf.d/mtune
are set as follows:
Value Default Min Max
----- ------- --- ---
NBUF 0 24 450000
NHBUF 0 32 524288
NMPBUF 0 12 512
MAX_INODE 0 100 64000
MAX_FILE 0 100 64000
CTBUFSIZE 128 0 256
MAX_PROC 0 50 16000
MAX_REGION 0 500 160000
NCLIST 170 120 16640
MAXUP 100 15 16000
NOFILES 110 60 11000
NHINODE 128 64 8192
NAUTOUP 10 0 60
NGROUPS 8 0 128
BDFLUSHR 30 1 300
MAX_FLCKREC 0 50 16000
PUTBUFSZ 8000 2000 20000
MAXSLICE 100 25 100
ULIMIT 4194303 2048 4194303
* Streams Parameters
NSTREAM 64 1 32768
NSTRPUSH 9 9 9
NMUXLINK 192 1 4096
STRMSGSZ 16384 4096 524288
STRCTLSZ 1024 1024 1024
STRMAXBLK 524288 4096 524288
NSTRPAGES 500 0 8000
STRSPLITFRAC 80 50 100
NLOG 3 3 3
NUMSP 64 1 256
NUMTIM 16 1 8192
NUMTRW 16 1 8192
* Semaphore Parameters
SEMMAP 10 10 8192
SEMMNI 10 10 8192
SEMMNS 60 60 8192
SEMMNU 30 10 8192
SEMMSL 25 25 150
SEMOPM 10 10 1024
SEMUME 10 10 25
SEMVMX 32767 32767 32767
SEMAEM 16384 16384 16384
* Shared Memory Parameters
SHMMAX 524288 131072 2147483647
SHMMIN 1 1 1
SHMMNI 100 100 2000
FILE 0 100 64000
NMOUNT 0 4 256
NPROC 0 50 16000
NREGION 0 500 160000
We recommend setting these values as follows:
NOFILES
should be 4096 or 2048.
MAXUP
should be 2048.
To make changes to the kernel, cd
to
/etc/conf/bin
and use
./idtune name
parameter
to make the changes. For example, to
change SEMMS
to 200
,
execute these commands as root
:
# cd /etc/conf/bin
# ./idtune SEMMNS 200
We recommend tuning the system, but the proper parameter
values to use depend on the number of users accessing the
application or database and size the of the database (that is,
the used buffer pool). The following affects the kernel
parameters defined in
/etc/conf/cf.d/stune
:
SHMMAX
(recommended setting: 128MB) and
SHMSEG
(recommended setting: 15). These
parameters have influence on the MySQL database engine to
create user buffer pools.
NOFILES
and MAXUP
should
be at to at least 2048.
MAXPROC
should be set to at least 3000/4000
(depends on number of users) or more.
Also is recommended to use following formula to count value
for SEMMSL
, SEMMNS
and
SEMMNU
:
SEMMSL = 13
The 13 is what has been found to be the best for both Progress
and MySQL.
SEMMNS
= SEMMSL
* number
of db servers to be run on the system.
Set SEMMNS
to the value of
SEMMSL
multiplied by the number of db
servers (maximum) that you are running on the system at one
time.
SEMMNU = SEMMNS
Set the value of SEMMNU
to equal the value
of SEMMNS
. You could probably set this to
75% of SEMMNS
, but this is a conservative
estimate.
You need to at least install the "SCO OpenServer Linker and
Application Development Libraries" or the OpenServer
Development System to use gcc. You cannot
just use the GCC Dev system without installing one of these.
You should get the FSU Pthreads package and install it first.
This can be found at
https://moss.csc.ncsu.edu/~mueller/ftp/pub/PART/pthreads.tar.gz.
You can also get a precompiled package from
ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads-3.14.tar.gz.
FSU Pthreads can be compiled with SCO Unix 4.2 with tcpip, or
using OpenServer 3.0 or Open Desktop 3.0 (OS 3.0 ODT 3.0) with
the SCO Development System installed using a good port of GCC
2.5.x. For ODT or OS 3.0, you need a good port of GCC 2.5.x.
There are a lot of problems without a good port. The port for
this product requires the SCO Unix Development system. Without
it, you are missing the libraries and the linker that is
needed. You also need
SCO-3.2v4.2-includes.tar.gz
. This file
contains the changes to the SCO Development include files that
are needed to get MySQL to build. You need to replace the
existing system include files with these modified header
files. They can be obtained from
ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz.
To build FSU Pthreads on your system, all you should need to
do is run GNU make. The
Makefile
in FSU-threads-3.14.tar.gz is
set up to make FSU-threads.
You can run ./configure in the
threads/src
directory and select the SCO
OpenServer option. This command copies
Makefile.SCO5
to
Makefile
. Then run
make.
To install in the default /usr/include
directory, log in as root
, and then
cd
to the thread/src
directory and run make install.
Remember that you must use GNU make to
build MySQL.
Note: If you don't start
mysqld_safe as root
, you
should get only the default 110 open files per process.
mysqld writes a note about this in the log
file.
With SCO 3.2V4.2, you should use FSU Pthreads version 3.14 or
newer. The following configure command
should work:
CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
./configure \
--prefix=/usr/local/mysql \
--with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
--with-named-curses-libs="-lcurses"
You may have problems with some include files. In this case,
you can find new SCO-specific include files at
ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz.
You should unpack this file in the
include
directory of your MySQL source
tree.
SCO development notes:
MySQL should automatically detect FSU Pthreads and link
mysqld with -lgthreads -lsocket
-lgthreads
.
The SCO development libraries are re-entrant in FSU
Pthreads. SCO claims that its library functions are
re-entrant, so they must be re-entrant with FSU Pthreads.
FSU Pthreads on OpenServer tries to use the SCO scheme to
make re-entrant libraries.
FSU Pthreads (at least the version at
ftp::/ftp.zenez.com) comes linked with GNU
malloc
. If you encounter problems with
memory usage, make sure that
gmalloc.o
is included in
libgthreads.a
and
libgthreads.so
.
In FSU Pthreads, the following system calls are
pthreads-aware: read()
,
write()
, getmsg()
,
connect()
, accept(),
select()
, and
wait()
.
The CSSA-2001-SCO.35.2 (the patch is listed in custom as
erg711905-dscr_remap security patch (version 2.0.0))
breaks FSU threads and makes mysqld
unstable. You have to remove this one if you want to run
mysqld on an OpenServer 5.0.6 machine.
If you use SCO OpenServer 5, you may need to recompile FSU
pthreads with -DDRAFT7
in
CFLAGS
. Otherwise,
InnoDB
may hang at a
mysqld startup.
SCO provides operating system patches at
ftp://ftp.sco.com/pub/openserver5 for
OpenServer 5.0.x.
SCO provides security fixes and
libsocket.so.2
at
ftp://ftp.sco.com/pub/security/OpenServer
and ftp://ftp.sco.com/pub/security/sse for
OpenServer 5.0.x.
-
Pre-OSR506 security fixes. Also, the
telnetd
fix at
ftp://stage.caldera.com/pub/security/openserver/
or
ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/
as both libsocket.so.2
and
libresolv.so.1
with instructions for
installing on pre-OSR506 systems.
It's probably a good idea to install these patches before
trying to compile/use MySQL.
Beginning with Legend/OpenServer 6.0.0, there are native
threads and no 2GB file size limit.