Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué es el intercambio? Expertos, por favor ayuden a explicar ~~ Gracias ~~

¿Qué es el intercambio? Expertos, por favor ayuden a explicar ~~ Gracias ~~

Swap, es decir, el área de intercambio, excepto al instalar Linux, ¿a cuántas personas les importa? De hecho, el ajuste de Swap es fundamental para el rendimiento de los servidores Linux, especialmente los servidores web. Al ajustar Swap, a veces puedes superar los cuellos de botella en el rendimiento del sistema y ahorrar dinero en actualizaciones del sistema.

Como todos sabemos, los sistemas operativos modernos han implementado la tecnología de "memoria virtual", que no sólo rompe funcionalmente las limitaciones de la memoria física, permitiendo que los programas operen en un espacio mayor que la memoria física real, sino también en más espacio. Es importante destacar que la "memoria virtual" es una red segura y confiable que aísla cada proceso.

La "memoria virtual" es una red de seguridad que aísla cada proceso de otras partes del programa.

La función del espacio de intercambio se puede describir brevemente de la siguiente manera: cuando la memoria física del sistema es insuficiente, es necesario liberar una parte de la memoria física para que la utilice el programa que se está ejecutando actualmente. Estos espacios liberados pueden provenir de programas que no se han ejecutado durante mucho tiempo. Estos espacios liberados se guardan temporalmente en el espacio de intercambio. Cuando sea necesario ejecutar estos programas, los datos guardados se restaurarán desde el espacio de intercambio a la memoria. De esta forma, cuando la memoria física sea insuficiente, el sistema siempre realizará un intercambio Swap.

Los usuarios de ordenadores suelen encontrarse con este fenómeno. Por ejemplo, cuando usa Windows, puede ejecutar varios programas al mismo tiempo, y cuando cambia a un programa que no ha usado durante mucho tiempo, escuchará el "clic" del disco duro. Esto se debe a que la memoria del programa ha sido "robada" por programas que se ejecutan con frecuencia y colocada en el área de intercambio. Entonces, una vez que coloca su programa en la interfaz, obtiene los datos del intercambio, los coloca en la memoria y los ejecuta nuevamente.

Cabe señalar que no todos los datos intercambiados desde la memoria física se colocarán en Swap (si es así, Swap se verá abrumado), una parte considerable de los datos se intercambiará directamente al sistema de archivos. Por ejemplo, algunos programas abrirán algunos archivos y realizarán operaciones de lectura y escritura en ellos (de hecho, cada programa abrirá al menos un archivo, que es el programa en ejecución). Cuando necesite intercambiar espacio de memoria para estos programas, deberá hacerlo. No es necesario colocar los datos de la parte del archivo del programa en el espacio de intercambio, sino que se pueden colocar directamente en el archivo. Si se trata de una operación de lectura de archivos, los datos de la memoria se liberan directamente sin intercambiarlos, porque se pueden restaurar directamente desde el sistema de archivos la próxima vez que sea necesario; si se trata de una operación de escritura de archivos, solo es necesario guardar los datos modificados; al archivo para que se recupere. Pero los datos de objetos generados mediante malloc y nuevas funciones son diferentes. Requieren espacio de intercambio. Debido a que no tienen archivos de "reserva" correspondientes en el sistema de archivos, se denominan datos de memoria "anónimos". Este tipo de datos también incluye algunos datos de estado y variables en la pila. Por lo tanto, el espacio de intercambio es el espacio de intercambio para datos "anónimos".

Romper el límite de espacio de intercambio de 128 M

A menudo se ve que los manuales de instalación de Linux estipulan que el espacio de intercambio no puede exceder los 128 M. Antes de explicar el origen del número "128M", respondamos primero a esta pregunta: ¡no existe ningún límite de 128M!

El espacio de intercambio está paginado y el tamaño de cada página es el mismo que el de una página de memoria para facilitar el intercambio de datos entre el espacio de intercambio y la memoria. Las implementaciones anteriores de SwapSpace en Linux utilizaban la primera página de SwapSpace como un "mapa de bits" para todas las páginas de SwapSpace. Esto significa que cada bit de la primera página corresponde a una página de espacio de intercambio. Si este bit es 1, significa que la página está disponible; si este bit es 0, significa que la página es un bloque defectuoso y no se puede utilizar. En este caso, el primer bit de mapa de intercambio debe ser 0 porque la primera página de intercambio es una página asignada.

Además, los últimos 10 bits de mapeo se utilizan para indicar la versión de Swap (Swap_space en la versión original, swapspace2 en la versión actual). Por lo tanto, si el tamaño de una página es s, esta implementación de intercambio *** puede administrar páginas de intercambio "8*(s - 10)-1". Para el sistema i386, s=4096, el tamaño del espacio es 133890048, si consideramos 1 MB=2^20 Byte, el tamaño es 128M.

La razón por la que implementamos la gestión del espacio de intercambio de esta manera es para evitar que se produzcan bloques defectuosos en el espacio de intercambio. Si el sistema detecta un bloque defectuoso en el Swap, marcará 0 en el mapa de bits correspondiente, lo que indica que la página no está disponible. De esta forma, al utilizar Swap, no se utilizarán bloques defectuosos y el sistema no generará errores.

Los diseñadores de sistemas actuales creen:

1. La calidad de los discos duros actuales es muy buena y rara vez se producen bloqueos defectuosos.

2. Incluso si los hay, no habrá muchos, así que simplemente enumere los bloques defectuosos sin crear un mapeo para cada página.

3. Si hay una gran cantidad de bloques defectuosos, este disco duro no debe usarse como espacio de intercambio.

Como resultado, Linux ahora elimina el método de mapa de bits, eliminando así el límite de 128 M.

El impacto de la configuración Swap en el rendimiento

Asignar demasiado espacio Swap desperdiciará espacio en el disco, mientras que muy poco espacio Swap provocará errores en el sistema.

Si la memoria física del sistema está agotada, el sistema se ejecutará lentamente pero seguirá funcionando normalmente; si el espacio de intercambio del sistema está agotado, el sistema generará un error. Por ejemplo, un servidor web puede generar múltiples procesos de servicio (o subprocesos) según la cantidad de solicitudes. Si el espacio de intercambio se agota, el proceso de servicio no se puede iniciar y generalmente se producirá un error de "memoria de la aplicación insuficiente". En casos graves, también puede provocar que el proceso de servicio se bloquee. Por tanto, la asignación del espacio Swap es muy importante.

Generalmente, el espacio Swap debe ser mayor o igual al tamaño de la memoria física, y el mínimo no debe ser inferior a 64M. Generalmente, el tamaño del espacio Swap debe ser entre 2 y 2,5 veces el tamaño de la memoria física. Sin embargo, dependiendo de la aplicación, debe haber diferentes configuraciones: si se trata de un sistema de escritorio pequeño, solo se requiere un espacio Swap más pequeño, mientras que un sistema de servidor grande requiere diferentes tamaños de espacio Swap según la situación. Especialmente los servidores de bases de datos y los servidores web requieren más espacio de intercambio a medida que aumenta el número de accesos. Para una configuración específica, consulte las instrucciones de cada producto de servidor.

Además, el número de particiones Swap también tiene un impacto significativo en el rendimiento. Dado que las operaciones de intercambio son operaciones de IO de disco, si hay múltiples áreas de intercambio, la asignación del espacio de intercambio se realizará en todas las áreas de intercambio de manera rotativa, lo que equilibrará en gran medida la carga de IO y acelerará el intercambio. Si solo hay un área de intercambio, todas las operaciones de intercambio harán que el área de intercambio esté muy ocupada, dejando el sistema en estado de espera la mayor parte del tiempo, lo cual es muy ineficiente. Al utilizar herramientas de monitoreo de rendimiento, encontrará que la CPU no está ocupada en este momento, pero el sistema está muy lento. Esto muestra que el cuello de botella es IO y aumentar la velocidad de la CPU no resuelve el problema.

Supervisión del rendimiento del sistema

La asignación de espacio de intercambio es importante, pero la supervisión del rendimiento del sistema en tiempo de ejecución es más valiosa. Al utilizar herramientas de monitoreo del rendimiento, puede verificar las métricas de rendimiento de su sistema y encontrar cuellos de botella en el rendimiento del sistema. Este artículo solo presenta algunos comandos y usos relacionados con Swap en Solaris.

El comando más utilizado es Vmstat (disponible en la mayoría de las plataformas Unix), que se puede utilizar para comprobar la mayoría de las métricas de rendimiento.

Por ejemplo:

# vmstat 3

procs memoria swap io sistema cpu

r b w swpd free buff cache si so bi bo in cs us sy id

0 0 0 0 93880 3304 19372 00 0 10 2 131 10 0 0 99

0 0 0 0 93880 3304 19372 0 0 0 0 109 8 0 0 100

0 0 0 0 93880 3304 19372 0 0 0 0 112 6 0 0 100

......... ......

Descripción del comando:

Los parámetros que siguen a vmstat especifican el intervalo de tiempo para capturar indicadores de rendimiento. 3 significa capturar cada tres segundos. No es necesario leer la primera línea de datos y no tiene valor; solo refleja el rendimiento promedio desde el inicio. A partir de la segunda línea, las métricas de rendimiento del sistema se recopilan cada tres segundos. Estos indicadores de rendimiento relacionados con el intercambio incluyen lo siguiente:

w

Procs bajo w

Indica que la memoria debe liberarse en el momento actual (dentro de tres segundos) y el número de procesos que intercambian memoria.

swpd en memoria

Indica el espacio de intercambio utilizado.

si, por lo que en Swap

si representa la cantidad total de memoria intercambiada por segundo (Swap in) en el momento actual (dentro de tres segundos), en kilobytes, por lo que representa El total; Cantidad de memoria intercambiada por segundo en el momento actual (en tres segundos), en kilobytes.

Cuanto mayor sea el número de los indicadores anteriores, más ocupado estará el sistema. La actividad del sistema que muestran estos indicadores está relacionada con la configuración específica del sistema. Los administradores del sistema deben anotar los valores de estos indicadores cuando el sistema se ejecuta normalmente y luego compararlos cuando ocurre un problema con el sistema, para que puedan identificar rápidamente el problema y desarrollar valores de indicadores estándar para el funcionamiento normal del sistema. sistema para lograr propósitos de monitoreo del desempeño.

Además, utilizando Swapon-s puedes ver fácilmente el uso actual de los recursos de Swap. Por ejemplo:

# swapon -s

Nombre de archivo Tipo Tamaño Prioridad utilizada

/dev/hda9 partición 361420 0 3

Fácil de ver El tamaño de los recursos usados ​​y no utilizados en el espacio de intercambio.

Para un buen rendimiento del sistema, la carga de intercambio debe mantenerse por debajo de 30.

Comandos del sistema relacionados con operaciones de intercambio

Los pasos para aumentar el espacio de intercambio son los siguientes:

1) Conviértete en un superusuario

$su - root

2) Crear un archivo de intercambio

# dd if=/dev/zero of=swapfile bs=1024 count=65536

Crear un archivo de intercambio con archivos de intercambio de espacio continuo.

3) Activar el archivo de intercambio

#/usr/sbin/swapon swapfile

swapfile se refiere al archivo de intercambio creado en el paso anterior. 4) Ahora, el archivo de intercambio recién agregado comienza a funcionar, pero el sistema no recordará los pasos anteriores después de reiniciar.

Por lo tanto, registre el nombre del archivo y el tipo de intercambio en el archivo /etc/fstab, por ejemplo:

/path/swapfile none Swap sw, pri=3 0 0

5) Verifique que el archivo de intercambio se haya agregado.

/usr/sbin/swapon -s

Elimine el exceso de espacio de intercambio.

1) Conviértete en un superusuario

2) Utiliza el comando Swapoff para recuperar espacio de intercambio.

#/usr/sbin/swapoff swapfile

3) Edite el archivo /etc/fstab y elimine esta entidad del archivo de intercambio.

4) Reciclar el archivo del sistema de archivos.

#rm swapfile

5) Por supuesto, si el espacio de intercambio no es un archivo sino una partición, debe crear un nuevo sistema de archivos y montarlo en el sistema de archivos original. .